Dans l'Objectif C, je peux utiliser #pragma mark
pour marquer des sections de mon code dans le navigateur de symboles. Comme il s'agit d'une commande de préprocesseur C, elle n'est pas disponible dans Swift. Y a-t-il un remplaçant pour cela dans Swift, ou dois-je utiliser des commentaires laids?
swift
documentation
Arbitur
la source
la source
Réponses:
Vous pouvez utiliser
// MARK:
Il a également été discuté que l'utilisation libérale des extensions de classe pourrait être une meilleure pratique de toute façon. Étant donné que les extensions peuvent implémenter des protocoles, vous pouvez, par exemple, mettre toutes vos méthodes de délégué de vue de table dans une extension et regrouper votre code à un niveau plus sémantique que ce qui
#pragma mark
est possible.la source
// MARK:
,// TODO:
et// FIXME
dans la source Swift et les présente dans la barre de saut. (BTW, il l'a déjà fait dans (Obj) C source - ce#pragma mark
n'est pas le seul moyen.) Et oui, vous pouvez toujours ajouter-
à votreMARK
pour mettre des séparateurs dans le menu.MARK
travaillant maintenant, l'utilisation d'extensions pour regrouper certains types de code sémantiquement lié (en particulier les implémentations de protocoles) peut toujours être utile. À mon humble avis, il est beaucoup mieux d'avoir votre déclaration de conformité de protocole juste à côté des méthodes qui l'implémentent, pas 5 déclarations de protocole en haut du fichier et 50 implémentations de méthodes connexes dispersées de manière aléatoire quelque part en dessous.#pragma mark
.// MARK: -
est juste un séparateur,// MARK: - stuff
vous donne un séparateur et un en-tête, et// MARK: - stuff -
vous donne un séparateur, un en-tête et un autre séparateur tout en une seule ligne de commentaire.Jusqu'à Xcode 5, la directive du préprocesseur
#pragma mark
existait.A partir de Xcode 6, vous devez utiliser
// MARK:
Ces fonctionnalités de préprocesseur permettent d'apporter une certaine structure à la liste déroulante des fonctions de l'éditeur de code source.
quelques exemples :
-> sera précédé d'un séparateur horizontal
-> met 'votre texte va ici' en gras dans la liste déroulante
-> met 'votre texte va ici' en gras dans la liste déroulante, précédé d'un séparateur horizontal
mise à jour: capture d'écran ajoutée, car certaines personnes semblent toujours avoir des problèmes avec ceci:
la source
// MARK: - text
pour moi et la liste déroulante affiche MARK: texte au lieu de simplement du texte .Pour ceux qui souhaitent utiliser des extensions par rapport aux marques pragma (comme mentionné dans le premier commentaire), voici comment l'implémenter à partir d'un ingénieur Swift:
Ce n'est pas non plus nécessairement la meilleure pratique, mais c'est ainsi que vous le faites si vous le souhaitez.
la source
typealias
. Par exempletypealias DataSource = SwiftTableViewController
. Ensuiteextension Datasource {}
UITableViewController
n'est pas un protocole, c'est une classe. Vous voulez probablement direUITableViewControllerDataSource
, mais ce n'est pas le modèle utilisé dans l'exemple.extension
-tête avec le protocole, commeextension SwiftTableViewController : UITableViewController
, il serait plus lisible de voir pourquoi vous avez ajouté cette extension à la classe.extension SwiftTableViewController : UITableViewDelegate { .. }
etextension SwiftTableViewController : UITableViewDatasource { .. }
Pragma mark - [SOME TEXT HERE]
a été utilisé dans Objective-C pour regrouper plusieurs fonctions par séparation de lignes.Dans Swift, vous pouvez y parvenir en utilisant
MARK, TODO OR FIXME
je. MARQUE :
//MARK: viewDidLoad
Cela va créer une ligne horizontale avec des fonctions regroupées sous viewDidLoad (montré dans la capture d'écran 1)
ii. FAIRE :
//TODO: - viewDidLoad
Cela regroupera la fonction sous TODO: - catégorie viewDidLoad (montré dans la capture d'écran 2)
iii. RÉPARE-MOI :
//FIXME - viewDidLoad
Cela regroupera la fonction sous FIXME: - catégorie viewDidLoad (montré dans la capture d'écran 3)
Consultez cette documentation Apple pour plus de détails.
la source
Documentation officielle
Document officiel d'Apple sur Xcode Jump Bar: ajouter des annotations de code à la barre de saut
Captures d'écran de la barre de saut pour un exemple de code
Comportement dans Xcode 10.1 et macOS 10.14.3 (Mojave)
Comportement dans Xcode 10.0 et macOS 10.13.4 (High Sierra)
Comportement dans Xcode 9.4.1 et macOS 10.13.0
Discussion
!!!:
et???:
parfois ne peuvent pas être affichés.la source
Dans le code Objective-C, Xcode détecte des commentaires comme celui
// MARK: - foo
qui est un peu plus portable que#pragma
. Mais ceux-ci ne semblent pas non plus être repris (encore?).Edit: corrigé dans Xcode 6 beta 4.
la source
// MARK: -
ne fonctionne pas pour le moment.// MARK:
ne semble pas fonctionner. J'ai essayé avec et sans l'espace, avec et sans les deux points, tout en majuscules et mixtes (Mark). Y a-t-il une astuce? Dois-je activer un pref ou quelque chose?Je pense que
Extensions
c'est une meilleure façon de le faire#pragma mark
.Le code avant d'utiliser
Extensions
:Le code après utilisation
Extensions
:la source
extension
seul ne se démarque pas vraiment dans le menu déroulant du contrôle du fil d'Ariane de Xcode.Xcode 8 le gère maintenant comme suit et apparaît comme ceci dans le menu déroulant de la méthode:
la source
// ARK:
pour moi dans Xcode 8!!!
et???
ne semble pas fonctionner sur Xcode 8.3.3 ...Confirmé avec un ingénieur Apple dans le laboratoire Swift ce matin à la WWDC qu'il n'y a actuellement pas de #pragma ou équivalent pour le moment, ils considèrent cela comme un bug, et il arrivera bientôt, donc je suppose que la bêta 2, j'espère.
Quoi qu'il en soit, c'est en route.
Xcode prend désormais en charge les repères // MARK :, // TODO: et // FIXME pour annoter votre code et les répertorier dans la barre de saut
la source
Il y a trois options à ajouter
#pragma_mark
dans Swift:1)
// MARK: - your text here -
2)
// TODO: - your text here -
3)
// FIXME: - your text here -
Remarque: utilise
-
pour ajouter des séparateursla source
Utilisation
ou
Cela donnera une ligne au-dessus de la marque pragma, la rendant plus lisible.
Pour plus de facilité, ajoutez simplement
à vos extraits de code.
Autre moyen -
Utilisez-le de cette façon
Cela ajoutera non seulement une marque (tout comme la marque pragma) mais séparera également le code.
la source
//MARK
format (pas d'espace) et suggérera// MARK: (text)
( un espace entre//
et MARK, pas d'espace entreMARK
et:
, et un espace entre:
et le nom de la section)Ajoutez une ligne entre les deux points et votre description pour insérer une ligne de séparation. Cela permet d'organiser encore plus votre code. Le code et la capture d'écran ci-dessus utilisent le commentaire MARK avec une ligne incluse.
Cela ne fonctionne qu'avec le commentaire MARK.
la source
Vous pouvez également être intéressé par les directives du compilateur Swift 4.2 / XCode 10 comme
et
Cela peut être utile lorsque vous ne voulez vraiment rien manquer.
la source
Le programmeur professionnel doit utiliser cette balise pour obtenir un bon code. C'est aussi bon pour le travail d'équipe.
Il est facile de trouver une méthode comme celle-ci
la source
Dans Xcode 11, ils ont ajouté une mini-carte qui peut être activée
Editor -> Minimap
.La mini-carte affichera chaque texte de marque pour une orientation rapide dans le code. Chaque marque est écrite comme
// MARK: Variables
la source
//MARK:
ne semble pas fonctionner pour moi dans Xcode 6.3.2. Cependant, c'est ce que j'ai fait pour le faire fonctionner :1) Code:
2) Dans le
jump bar
rien ne semble changer lors de l'ajout du//MARK
: commentaire. Cependant, si je clique sur le nom le plus à droite dans la barre de saut, dans mon cas, il est ditMainWindowController(with a leading C icon)
, alors une fenêtre contextuelle s'affichera montrant les effets du commentaire // MARK:, à savoir un titre qui dit "Mes méthodes cool":3) Je remarque également que si je clique sur l'une des méthodes de mon code, la méthode devient l'entrée la plus à droite dans la barre de saut. Pour arriver
MainWindowController(with a leading C icon)
à être l'entrée la plus à droite dans la barre de saut, je dois cliquer sur l'espace au-dessus de mes méthodes.la source
Apple déclare dans la dernière version de Building Cocoa Apps ,
Le caractère # semble toujours être la façon dont vous travaillez avec diverses configurations de construction et des choses comme ça, mais il semble qu'ils essaient de réduire votre besoin de pré-traitement dans la veine de Pragma et de vous transmettre à d'autres fonctionnalités de langage. Peut-être est-ce pour aider au fonctionnement des Playgrounds et du REPL se comportant le plus près possible du code entièrement compilé.
la source
la source
Essaye ça:
la source
La marque Pragma est un moyen d'améliorer la lisibilité de votre code. Les commentaires du pragma apparaîtront comme des balises sur la barre de saut Xcode.
Exemple: dans le code,
Voici comment cela apparaîtrait dans la barre de saut Xcode.
la source