Quelle est la signification des marques #pragma? Pourquoi avons-nous besoin de marques #pragma?

279

À quoi servent les #pragmamarques dans Xcode? Leur emplacement dans les .mfichiers est-il important? Certains devraient-ils #pragmapasser avant tous les autres?

  • Doivent-ils être présents?
  • Peut-on ajouter de nouvelles marques? Pourquoi le seraient-ils? Quelles sont les causes?
  • Y a-t-il un mal à faire enlever une marque? Le voudrait-on jamais?
James Raitsev
la source
5
Vérifiez le lien: cocoasamurai.blogspot.com/2006/09/…
rptwsthi
Personnellement, je ne les aime pas. Sérieusement, vous voulez savoir où vous devez mettre une méthode tout le temps? Il y a des choses beaucoup plus importantes à garder organisées, comme prêter attention au principe de responsabilité unique
Brad Thomas
2
Pour un langage rapide, la marque #Pragma ne fonctionnera pas. Utilisez #MARK ou #FIXME ou #TODO consultez ce lien pour plus d'informations stackoverflow.com/a/33040068/1753005
Jayprakash Dubey

Réponses:

315

#pragma markles directives apparaissent dans Xcode dans les menus pour un accès direct aux méthodes. Ils n'ont aucun impact sur le programme.

Par exemple, son utilisation avec Xcode 4 fera apparaître ces éléments directement dans la barre de saut.

Il y a un spécial pragma mark -qui crée une ligne.

entrez la description de l'image ici

Erre Efe
la source
Appréciez la réponse - seriez-vous en mesure de publier une réponse mise à jour montrant à quoi ressemblent les marques de pragma (dans ce menu ou où qu'elles se trouvent maintenant) dans le nouveau XCode?
user7804781
Existe-t-il un équivalent Python?
Edward Falk
@EdwardFalk C'est spécifique à l'IDE, donc cela dépend vraiment de votre éditeur de texte / IDE
Michael Ozeryansky
Mon compilateur GCC a donné l'avertissement, foo.h: 52: 0: avertissement: ignorer la marque #pragma [-Wunknown-pragmas] #pragma mark -, ce qui n'est pas fatal. Donc gcc ne connaît probablement pas «-».
Kemin Zhou
55

#pragma markest utilisé pour baliser le groupe de méthodes afin que vous puissiez facilement trouver et détecter des méthodes dans la barre de saut. Cela peut vous aider lorsque vos fichiers de code atteignent environ 1 000 lignes et que vous souhaitez trouver rapidement des méthodes dans la catégorie de Jump box.

Dans un programme long, il devient difficile de se souvenir et de trouver un nom de méthode. Donc, pragma mark vous permet de classer les méthodes en fonction de leur travail. Par exemple, vous avez marqué une balise pour les méthodes de protocole de vue de table, les méthodes AlertView, les méthodes d'initialisation, la déclaration, etc.

#pragma markest la facilité pour XCode mais cela n'a aucun impact sur votre code. Cela aide simplement à faciliter la recherche de méthodes lors du codage.

dayitv89
la source
21

En un mot simple, nous pouvons dire qu'il #pragma mark -est utilisé pour classer les méthodes, afin que vous puissiez trouver facilement vos méthodes. Il est très utile pour les projets longs.

joueur
la source
13

Juste pour ajouter les informations que je cherchais: pragma markest spécifique à Xcode, donc si vous traitez un projet C ++ que vous ouvrez dans différents IDE, cela n'a aucun effet. Dans Qt Creator, par exemple, il n'ajoute pas de catégories pour les méthodes et ne génère aucun avertissement / erreur.

ÉDITER

#pragmaest une directive de préprocesseur qui vient du langage de programmation C. Son but est de spécifier au compilateur des informations dépendant de l'implémentation - c'est-à-dire que chaque compilateur peut choisir d'interpréter cette directive comme il le souhaite. Cela dit, il est plutôt considéré comme une extension qui ne modifie / n'influence pas le code lui-même. Les compilateurs pourraient donc tout aussi bien l'ignorer.

Xcode est un IDE qui en profite #pragmaet l'utilise à sa manière. Le point est, #pragman'est pas Xcode et même spécifique à Objective-C.

Maxim Chetrusca
la source
11

Lorsque nous avons une classe grande / longue, disons plus de 100 lignes de code, nous ne pouvons pas tout voir sur l'écran du moniteur, donc nous ne pouvons pas voir la vue d'ensemble (également appelée éléments de document) de notre classe. Parfois, nous voulons voir un aperçu de notre classe; toutes ses méthodes, constantes, propriétés, etc. en un coup d'œil. Vous pouvez appuyer sur Ctrl + 6 dans XCode pour voir un aperçu de votre classe. Vous obtiendrez une sorte de fenêtre pop-up aka Jump Bar.

Par défaut, cette barre de saut n'a pas de seaux / sections. Ce n'est qu'une longue liste. (Bien que nous puissions simplement commencer à taper lorsque la barre de saut apparaît et il recherchera parmi les éléments de la barre de saut). Voici le besoin depragma mark

Si vous souhaitez créer des sections dans votre barre de saut, vous pouvez utiliser des marques de pragma avec une description appropriée. Reportez-vous maintenant à l'instantané ci-joint. Il 'Voir le cycle de vie' et 'Une section dédiée ..' sont des sections créées par pragma marks

Saurabh Hooda
la source
10

Lors de la recherche de doc pour indiquer à quel point pragma sont des directives pour le compilateur, j'ai trouvé cet article NSHipster qui fait assez bien le travail.

J'espère que vous apprécierez la lecture

teriiehina
la source
7
#pragma mark - NSSecureCoding

Le but principal de "pragma" est à titre de référence pour les développeurs.entrez la description de l'image ici

Vous pouvez facilement trouver une méthode / fonction dans des milliers de lignes de codage.

Xcode 11+:

Ligne de marqueur en haut

// MARK: - Properties

Ligne de marqueur en haut et en bas

// MARK: - Properties - 

Ligne de marqueur uniquement en bas

// MARK: Properties -
Jeba Moses
la source
Je peux donc supprimer la ligne? sa perte d'espace pour mon cerveau.
1
La suppression de # pragma-mark n'affectera pas les fonctionnalités de votre code, mais votre code peut perdre sa lisibilité. Si vous ne voulez vraiment pas, vous pouvez le supprimer.
Jeba Moses