294 votes

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

Quel est le but de #pragma dans Xcode ? Est-ce que leur emplacement dans .m les fichiers ont-ils de l'importance ? Est-ce que certains #pragma passent avant tous les autres ?

  • Doivent-ils être présents ?
  • Peut-on ajouter de nouvelles marques ? Pourquoi le seraient-elles ? Quelle en est la cause ?
  • Y a-t-il un danger à faire enlever une marque ? Est-ce qu'on le voudrait ?

5 votes

0 votes

Personnellement, je ne les aime pas. Sérieusement, vous voulez penser à l'endroit où vous devez mettre une méthode en permanence ? Il y a des choses bien plus importantes à organiser, comme faire attention au Principe de Responsabilité Unique.

2 votes

Pour le langage swift, #Pragma mark ne fonctionne pas. Utilisez #MARK ou #FIXME ou #TODO. Consultez ce lien pour plus d'informations. stackoverflow.com/a/33040068/1753005

323voto

Randolf R-F Points 8767

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

Par exemple, en l'utilisant avec Xcode 4, ces éléments apparaîtront directement dans la barre de saut.

Il existe une pragma mark - ce qui crée une ligne.

enter image description here

56voto

GauravDS Points 1504

#pragma mark est utilisé pour marquer le groupe de méthodes afin que vous puissiez facilement trouver et détecter les méthodes à partir de la barre de saut. Cela peut vous aider lorsque vos fichiers de code atteignent environ 1000 lignes et que vous souhaitez trouver rapidement des méthodes grâce à la catégorie de la boîte de saut.

Dans un programme long, il devient difficile de se souvenir et de trouver le nom d'une méthode. Ainsi, marque pragma vous permet de classer les méthodes en fonction du travail qu'elles accomplissent. Par exemple, vous avez étiqueté une balise pour les méthodes du protocole Table View, les méthodes AlertView, les méthodes Init, les déclarations, etc.

#pragma mark est la facilité pour XCode mais elle n'a aucun impact sur votre code. Elle permet simplement de faciliter la recherche de méthodes pendant le codage.

22voto

Gamer Points 333

En termes simples, nous pouvons dire que #pragma mark - est utilisé pour catégoriser les méthodes, afin que vous puissiez retrouver facilement vos méthodes. Il est très utile pour les longs projets.

16voto

Maxim Chetrusca Points 300

Juste pour ajouter l'information que je cherchais : pragma mark est spécifique à Xcode, donc si vous avez affaire à un projet C++ que vous ouvrez dans différents IDEs, 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 pas d'avertissements/erreurs.

EDITAR

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

Xcode est un IDE qui tire parti de #pragma et l'utilise de manière spécifique. Le fait est que, #pragma n'est pas spécifique à Xcode ni même à Objective-C.

13voto

Jeba Moses Points 359
#pragma mark - NSSecureCoding

Le principal objectif de "pragma" est de servir de référence au développeur. enter image description here

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

Xcode 11+ :

Ligne de repère en haut

// MARK: - Properties

Ligne de marquage en haut et en bas

// MARK: - Properties - 

Ligne de marquage uniquement en bas

// MARK: Properties -

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X