¿Cuál es el significado de las marcas #pragma? ¿Por qué necesitamos marcas de #pragma?

279

¿Cuál es el propósito de las #pragmamarcas en Xcode? ¿Importa su ubicación en los .marchivos? ¿Deberían algunos #pragmavenir antes que todos los demás?

  • ¿Tienen que estar presentes?
  • ¿Se pueden agregar nuevas marcas? ¿Por qué estarían ellos? ¿Qué lo causa?
  • ¿Hay algún daño en quitar una marca? ¿Alguna vez querría?
James Raitsev
fuente
55
Consulte el enlace: cocoasamurai.blogspot.com/2006/09/…
rptwsthi
Personalmente no me gustan. En serio, ¿quieres pensar dónde tienes que poner un método todo el tiempo? Hay cosas mucho más importantes para mantenerse organizado, como prestar atención al Principio de Responsabilidad Única
Brad Thomas
2
Para un lenguaje rápido, la marca #Pragma no funcionará. Utilice #MARK o #FIXME o #TODO; consulte este enlace para obtener más información stackoverflow.com/a/33040068/1753005
Jayprakash Dubey

Respuestas:

315

#pragma markLas directivas aparecen en Xcode en los menús para acceder directamente a los métodos. No tienen ningún impacto en el programa en absoluto.

Por ejemplo, usarlo con Xcode 4 hará que esos elementos aparezcan directamente en la barra de salto.

Hay un especial pragma mark -que crea una línea.

ingrese la descripción de la imagen aquí

Erre Efe
fuente
Agradezco la respuesta: ¿podría publicar una respuesta actualizada que muestre cómo se ven las marcas de pragma (en ese menú o donde sea que estén ahora) en el nuevo XCode?
user7804781
¿Hay un equivalente de Python?
Edward Falk
@EdwardFalk Es específico de IDE, por lo que realmente depende de su editor de IDE / texto
Michael Ozeryansky
Mi compilador GCC dio la advertencia, foo.h: 52: 0: advertencia: ignorando la marca #pragma [-Wunknown-pragmas] #pragma mark -, que no es fatal. Entonces gcc probablemente no sabe sobre '-'.
Kemin Zhou
55

#pragma markse usa para etiquetar el grupo de métodos para que pueda encontrar y detectar métodos fácilmente desde la barra de salto. Puede ayudarlo cuando sus archivos de código alcancen aproximadamente 1000 líneas y desee encontrar métodos rápidamente a través de la categoría desde el cuadro Saltar.

En un programa largo se hace difícil recordar y encontrar el nombre de un método. Entonces, pragma mark le permite clasificar los métodos de acuerdo con el trabajo que realizan. Por ejemplo, etiquetó alguna etiqueta para Métodos de protocolo de vista de tabla, Métodos de AlertView, Métodos de inicio, Declaración, etc.

#pragma markes la facilidad para XCode pero no tiene impacto en su código. Simplemente ayuda a facilitar la búsqueda de métodos mientras se codifica.

dayitv89
fuente
21

En palabras simples, podemos decir que #pragma mark -se usa para categorizar métodos, para que pueda encontrar sus métodos fácilmente. Es muy útil para proyectos largos.

Jugador
fuente
13

Solo para agregar la información que estaba buscando: pragma markes específico de Xcode, por lo que si trata con un proyecto C ++ que abre en diferentes IDE, no tiene ningún efecto allí. En Qt Creator, por ejemplo, no agrega categorías para métodos, ni genera advertencias / errores.

EDITAR

#pragmaes una directiva de preprocesador que proviene del lenguaje de programación C. Su propósito es especificar información dependiente de la implementación para el compilador, es decir, cada compilador podría elegir interpretar esta directiva como quiera. Dicho esto, se considera más bien una extensión que no cambia / influye en el código en sí. Entonces los compiladores podrían ignorarlo.

Xcode es un IDE que lo aprovecha #pragmay lo utiliza de manera específica. El punto es #pragmaque no es Xcode e incluso Objective-C específico.

Maxim Chetrusca
fuente
11

Cuando tenemos una clase grande / larga que dice más de un par de 100 líneas de código, no podemos ver todo en la pantalla del Monitor, por lo tanto, no podemos ver una descripción general (también llamada elementos del documento) de nuestra clase. En algún momento queremos ver una visión general de nuestra clase; todos sus métodos, constantes, propiedades, etc. de un vistazo. Puede presionar Ctrl + 6 en XCode para ver una descripción general de su clase. Obtendrá un tipo de ventana emergente, también conocida como Jump Bar.

Por defecto, esta barra de salto no tiene ningún cubo / sección. Es solo una larga lista. (Aunque podemos comenzar a escribir cuando aparece la barra de salto y buscará entre los elementos de la barra de salto). Aquí viene la necesidad depragma mark

Si desea crear secciones en su Jump Bar, puede usar marcas de pragma con una descripción relevante. Ahora consulte la instantánea adjunta en cuestión. Allí 'Ver lifeCycle' y 'Una sección dedicada ...' son secciones creadas por pragma marks

Saurabh Hooda
fuente
10

Mientras buscaba un documento para señalar cómo pragma son directivas para el compilador, encontré este artículo de NSHipster que hace el trabajo bastante bien.

Espero que disfrutes la lectura

teriiehina
fuente
7
#pragma mark - NSSecureCoding

El objetivo principal de "pragma" es para referencia del desarrollador.ingrese la descripción de la imagen aquí

Puede encontrar fácilmente un método / función en miles de líneas de codificación.

Xcode 11+:

Línea de marcador en la parte superior

// MARK: - Properties

Línea de marcador en la parte superior e inferior

// MARK: - Properties - 

Línea de marcador solo en la parte inferior

// MARK: Properties -
Jeba Moses
fuente
¿Entonces puedo quitar la línea? Es una pérdida de espacio para mi cerebro.
1
Eliminar # pragma-mark no afectará ninguna funcionalidad de su código, pero su código puede perder su legibilidad. Si realmente no quieres, puedes eliminarlo.
Jeba Moses