En el Objetivo C, puedo usar #pragma mark
para marcar secciones de mi código en el navegador de símbolos. Como se trata de un comando de preprocesador en C, no está disponible en Swift. ¿Hay un sustituto para esto en Swift, o tengo que usar comentarios feos?
swift
documentation
Arbitur
fuente
fuente
Respuestas:
Puedes usar
// MARK:
También se ha discutido que el uso liberal de las extensiones de clase podría ser una mejor práctica de todos modos. Dado que las extensiones pueden implementar protocolos, puede, por ejemplo, poner todos los métodos de delegado de vista de tabla en una extensión y agrupar su código a un nivel más semántico de lo que
#pragma mark
es capaz.fuente
// MARK:
,// TODO:
y// FIXME
en Swift source y los enumera en la barra de salto. (Por cierto, ya lo hizo en la fuente (Obj) C,#pragma mark
no es la única forma). Y sí, todavía puede agregar-
a suMARK
para poner separadores en el menú.MARK
trabajar ahora, usar extensiones para agrupar algunos tipos de código semánticamente relacionado (especialmente implementaciones de protocolo) puede ser útil. En mi humilde opinión, se lee mucho mejor tener su declaración de conformidad de protocolo justo al lado de los métodos que lo implementan, no 5 declaraciones de protocolo en la parte superior del archivo y 50 implementaciones de métodos relacionados dispersos aleatoriamente en algún lugar a continuación.#pragma mark
.// MARK: -
es solo un separador,// MARK: - stuff
le brinda un separador y un encabezado, y// MARK: - stuff -
le brinda un separador, un encabezado y otro separador, todo en una línea de comentario.Hasta Xcode 5
#pragma mark
existía la directiva de preprocesador .A partir de Xcode 6, debes usar
// MARK:
Estas características de preprocesador permiten aportar cierta estructura al cuadro desplegable de funciones del editor de código fuente.
algunos ejemplos :
-> estará precedido por un divisor horizontal
-> pone 'su texto va aquí' en negrita en la lista desplegable
-> pone 'su texto va aquí' en negrita en la lista desplegable, precedido por un divisor horizontal
actualización: captura de pantalla agregada porque algunas personas todavía parecen tener problemas con esto:
fuente
// MARK: - text
para mí y la lista desplegable muestra MARK: texto en lugar de solo texto .Para aquellos que estén interesados en usar extensiones vs marcas de pragma (como se menciona en el primer comentario), a continuación se explica cómo implementarlo desde un ingeniero de Swift:
Tampoco es necesariamente la mejor práctica, pero así es como lo haces si quieres.
fuente
typealias
. Por ejemplotypealias DataSource = SwiftTableViewController
. Entoncesextension Datasource {}
UITableViewController
no es un protocolo, es una clase. Probablemente quieras decirUITableViewControllerDataSource
, pero este no es el patrón utilizado en el ejemplo.extension
tengo el encabezado con el protocolo, por ejemploextension SwiftTableViewController : UITableViewController
, sería más legible ver por qué agregaste esa extensión a la clase.extension SwiftTableViewController : UITableViewDelegate { .. }
yextension SwiftTableViewController : UITableViewDatasource { .. }
Pragma mark - [SOME TEXT HERE]
se usó en Objective-C para agrupar varias funciones juntas separando líneas.En Swift puedes lograr esto usando
MARK, TODO OR FIXME
yo. MARCA :
//MARK: viewDidLoad
Esto creará una línea horizontal con funciones agrupadas en viewDidLoad (se muestra en la captura de pantalla 1)
ii) QUE HACER :
//TODO: - viewDidLoad
Esto agrupará la función en TODO: - categoría viewDidLoad (se muestra en la captura de pantalla 2)
iii) ARREGLARME :
//FIXME - viewDidLoad
Esto agrupará la función en FIXME: - categoría viewDidLoad (se muestra en la captura de pantalla 3)
Consulte esta documentación de Apple para más detalles.
fuente
Documentación oficial
Documento oficial de Apple sobre Xcode Jump Bar: agregue anotaciones de código a la barra de salto
Capturas de pantalla de Jump Bar para código de muestra
Comportamiento en Xcode 10.1 y macOS 10.14.3 (Mojave)
Comportamiento en Xcode 10.0 y macOS 10.13.4 (High Sierra)
Comportamiento en Xcode 9.4.1 y macOS 10.13.0
Discusión
!!!:
y a???:
veces no se pueden mostrar.fuente
En el código Objective-C, Xcode detecta comentarios como los
// MARK: - foo
que son un poco más portátiles que#pragma
. Pero estos tampoco parecen ser recogidos (¿todavía?).Editar: corregido en Xcode 6 beta 4.
fuente
// MARK: -
no está funcionando por el momento.// MARK:
no parece estar funcionando. He intentado con y sin el espacio, con y sin el colon, mayúsculas y mixto (Mark). ¿Hay algún truco? ¿Necesito activar un pref o algo?Creo que
Extensions
es una mejor manera en lugar de#pragma mark
.El código antes de usar
Extensions
:El código después de usar
Extensions
:fuente
extension
solo no se destaca realmente en el menú desplegable del control de ruta de exploración de Xcode.Xcode 8 ahora lo maneja de la siguiente manera y se muestra así en el menú desplegable del método:
fuente
// ARK:
para mí en Xcode 8!!!
y???
no parece estar funcionando en Xcode 8.3.3 ...Confirmado con un ingeniero de Apple en el laboratorio Swift esta mañana en WWDC que actualmente no hay ningún #pragma o equivalente en este momento, lo consideran un error, y llegará pronto, así que supongo que beta 2, espero.
De todos modos, está en camino.
Xcode ahora admite // MARK :, // TODO: y // FIXME hitos para anotar su código y enumerarlos en la barra de salto
fuente
Hay tres opciones para agregar
#pragma_mark
en Swift:1)
// MARK: - your text here -
2)
// TODO: - your text here -
3)
// FIXME: - your text here -
Nota: Usos
-
para agregar separadoresfuente
Utilizar
o
Esto dará una línea sobre la marca pragma, haciéndola más legible.
Para mayor comodidad solo agregue
a sus fragmentos de código.
Forma alternativa -
Úselo de esta manera
Esto no solo agregará la marca (al igual que la marca pragma) sino que también segregará el código muy bien.
fuente
//MARK
formato (sin espacio) y sugerirá// MARK: (text)
( un espacio entre//
y MARK, sin espacio entreMARK
y:
, y un espacio entre:
y el nombre de la sección)Agregue una línea entre los dos puntos y su descripción para insertar una línea de separación. Esto ayuda a organizar su código aún más. El código y la captura de pantalla anteriores hacen uso del comentario MARK con una línea incluida.
Esto solo funciona con el comentario MARK.
fuente
También te pueden interesar las directivas del compilador Swift 4.2 / XCode 10 como
y
Puede ser útil cuando realmente no quieres perderte algo.
fuente
El programador profesional debe usar esta etiqueta para obtener un buen código. También es bueno para el trabajo en equipo.
Es fácil encontrar un método como este
fuente
En Xcode 11 agregaron un minimapa que se puede activar
Editor -> Minimap
.El minimapa mostrará el texto de cada marca para una orientación rápida en el código. Cada marca está escrita como
// MARK: Variables
fuente
//MARK:
no parece funcionar para mí en Xcode 6.3.2. Sin embargo, esto es lo que hice para que funcione :1) Código:
2) En la
jump bar
nada parece cambiar al agregar el//MARK
: comentario. Sin embargo, si hago clic en el nombre de la derecha en la barra de salto, en mi caso diceMainWindowController(with a leading C icon)
, aparecerá una ventana emergente que muestra los efectos del comentario // MARK: un encabezado que dice "Mis métodos geniales":3) También noto que si hago clic en uno de los métodos en mi código, entonces el método se convierte en la entrada más a la derecha en la barra de salto. Para llegar
MainWindowController(with a leading C icon)
a ser la entrada más a la derecha en la barra de salto, tengo que hacer clic en el espacio en blanco sobre mis métodos.fuente
Apple declara en la última versión de Building Cocoa Apps ,
Parece que el carácter # sigue siendo la forma en que trabaja con varias configuraciones de compilación y cosas por el estilo, pero parece que están tratando de reducir su necesidad de la mayor parte del preprocesamiento en la línea de pragma y remitirlo a otras funciones de lenguaje por completo. Quizás esto sea para ayudar en el funcionamiento de los Playgrounds y el REPL comportándose lo más cerca posible del código completamente compilado.
fuente
fuente
Prueba esto:
fuente
La marca Pragma es una forma de mejorar la legibilidad de su código. Los comentarios de pragma aparecerían como etiquetas en la barra de salto Xcode.
Ejemplo: en el código,
Así es como aparecería en la barra de salto Xcode.
fuente