In Ziel C kann ich #pragma mark
Abschnitte meines Codes im Symbolnavigator markieren. Da dies ein C-Präprozessorbefehl ist, ist er in Swift nicht verfügbar. Gibt es dafür in Swift einen Ersatz oder muss ich hässliche Kommentare verwenden?
swift
documentation
Arbitur
quelle
quelle
Antworten:
Sie können verwenden
// MARK:
Es wurde auch diskutiert, dass die liberale Verwendung von Klassenerweiterungen ohnehin eine bessere Praxis sein könnte. Da Erweiterungen Protokolle implementieren können, können Sie z. B. alle Delegierungsmethoden für Ihre Tabellenansicht in eine Erweiterung einfügen und Ihren Code auf einer semantischeren Ebene gruppieren, als dies möglich
#pragma mark
ist.quelle
// MARK:
,// TODO:
und// FIXME
in Swift Quelle und listet sie in den Sprungbalken. (Übrigens hat es bereits in (Obj) C-Quelle getan -#pragma mark
ist nicht der einzige Weg.) Und ja, Sie können immer noch-
Ihre hinzufügenMARK
, um Trennzeichen in das Menü aufzunehmen.MARK
wenn Sie jetzt arbeiten, kann die Verwendung von Erweiterungen zum Gruppieren einiger Arten von semantisch verwandtem Code (insbesondere Protokollimplementierungen) immer noch nützlich sein. IMHO liest es sich viel besser, wenn Sie Ihre Protokollkonformitätserklärung direkt neben den Methoden haben, die sie implementieren, nicht 5 Protokolldeklarationen oben in der Datei und 50 verwandte Methodenimplementierungen, die zufällig irgendwo darunter verteilt sind.#pragma mark
.// MARK: -
ist nur ein Trennzeichen,// MARK: - stuff
gibt Ihnen ein Trennzeichen und eine Überschrift und// MARK: - stuff -
gibt Ihnen ein Trennzeichen, eine Überschrift und ein weiteres Trennzeichen in einer Kommentarzeile.Bis Xcode 5 existierte die Präprozessor-Direktive
#pragma mark
.Ab Xcode 6 müssen Sie verwenden
// MARK:
Diese Präprozessorfunktionen ermöglichen es, dem Funktions-Dropdown-Feld des Quellcode-Editors eine gewisse Struktur zu verleihen.
einige Beispiele :
-> wird ein horizontaler Teiler vorangestellt
-> setzt "Ihr Text geht hierher" in Fettdruck in die Dropdown-Liste
-> setzt "Ihr Text geht hierher" in Fettdruck in die Dropdown-Liste, gefolgt von einem horizontalen Teiler
Update: Screenshot hinzugefügt, da einige Leute immer noch Probleme damit haben:
quelle
// MARK: - text
für mich verwendet werden. Die Dropdown-Liste zeigt MARK: Text anstelle von nur Text .Für diejenigen, die an der Verwendung von Erweiterungen im Vergleich zu Pragma-Zeichen interessiert sind (wie im ersten Kommentar erwähnt), ist hier die folgende Implementierung von einem Swift Engineer:
Es ist auch nicht unbedingt die beste Vorgehensweise, aber so machen Sie es, wenn Sie möchten.
quelle
typealias
. Zum Beispieltypealias DataSource = SwiftTableViewController
. Dannextension Datasource {}
UITableViewController
ist kein Protokoll, es ist eine Klasse. Sie meinen wahrscheinlichUITableViewControllerDataSource
, aber dies ist nicht das im Beispiel verwendete Muster.extension
der Header nicht mit dem Protokoll versehen istextension SwiftTableViewController : UITableViewController
. Es wäre besser lesbar zu sehen, warum Sie diese Erweiterung zur Klasse hinzugefügt haben.extension SwiftTableViewController : UITableViewDelegate { .. }
undextension SwiftTableViewController : UITableViewDatasource { .. }
Pragma mark - [SOME TEXT HERE]
wurde in Objective-C verwendet, um mehrere Funktionen durch Zeilentrennung zu gruppieren .In Swift können Sie dies mit erreichen
MARK, TODO OR FIXME
ich. KENNZEICHEN :
//MARK: viewDidLoad
Dadurch wird eine horizontale Linie mit Funktionen erstellt, die unter viewDidLoad gruppiert sind (siehe Abbildung 1).
ii. MACHEN :
//TODO: - viewDidLoad
Dadurch wird die Funktion unter TODO gruppiert: - viewDidLoad- Kategorie (siehe Screenshot 2)
iii. FIXME:
//FIXME - viewDidLoad
Dadurch wird die Funktion unter FIXME gruppiert: - viewDidLoad- Kategorie (siehe Screenshot 3)
Weitere Informationen finden Sie in dieser Apple-Dokumentation .
quelle
Offizielle Dokumentation
Apples offizielles Dokument zur Xcode- Sprungleiste : Fügen Sie der Sprungleiste Code-Anmerkungen hinzu
Screenshots der Sprungleiste für Beispielcode
Verhalten in Xcode 10.1 und macOS 10.14.3 (Mojave)
Verhalten in Xcode 10.0 und macOS 10.13.4 (High Sierra)
Verhalten in Xcode 9.4.1 und macOS 10.13.0
Diskussion
!!!:
und???:
manchmal können nicht angezeigt werden.quelle
In Objective-C-Code erkennt Xcode Kommentare,
// MARK: - foo
die etwas portabler sind als#pragma
. Aber diese scheinen (noch?) Auch nicht aufgegriffen zu werden.Bearbeiten: In Xcode 6 Beta 4 behoben.
quelle
// MARK: -
momentan nicht funktioniert.// MARK:
scheint nicht zu funktionieren. Ich habe es mit und ohne Leerzeichen versucht, mit und ohne Doppelpunkt, All-Caps und Mixed (Mark). Gibt es einen Trick? Muss ich eine Voreinstellung aktivieren oder so?Ich denke, es
Extensions
ist ein besserer Weg als#pragma mark
.Der Code vor der Verwendung
Extensions
:Der Code nach der Verwendung von
Extensions
:quelle
extension
allein im Dropdown-Menü der Breadcrumb-Steuerung von Xcode nicht wirklich auffällt.Xcode 8 behandelt es jetzt wie folgt und wird in der Methoden-Dropdown-Liste folgendermaßen angezeigt:
quelle
// ARK:
für mich in Xcode 8!!!
und???
Syntax scheint nicht auf Xcode 8.3.3 zu funktionieren ...Mit einem Apple Engineer im Swift-Labor heute Morgen auf der WWDC bestätigt, dass es derzeit kein #pragma oder ähnliches gibt. Sie halten dies für einen Fehler und er wird bald eintreffen. Ich vermute also, dass es sich um Beta 2 handelt.
Wie auch immer, es ist auf dem Weg.
Xcode unterstützt jetzt die Markierungen // MARK:, // TODO: und // FIXME, um Ihren Code zu kommentieren und in der Sprungleiste aufzulisten
quelle
#pragma_mark
In Swift können drei Optionen hinzugefügt werden :1)
// MARK: - your text here -
2)
// TODO: - your text here -
3)
// FIXME: - your text here -
Hinweis: Wird
-
zum Hinzufügen von Trennzeichen verwendetquelle
Verwenden
oder
Dadurch wird eine Linie über der Pragma-Markierung angezeigt, wodurch die Lesbarkeit verbessert wird.
Zur Vereinfachung einfach hinzufügen
zu Ihren Code-Schnipsel.
Alternativer Weg -
Verwenden Sie es auf diese Weise
Dadurch wird nicht nur eine Markierung hinzugefügt (genau wie bei einer Pragma-Markierung), sondern der Code wird auch gut getrennt.
quelle
//MARK
Format beschweren (kein Leerzeichen) und vorschlagen// MARK: (text)
( ein Leerzeichen zwischen//
und MARK, kein Leerzeichen zwischenMARK
und:
und ein Leerzeichen zwischen:
und dem Abschnittsnamen)Fügen Sie eine Zeile zwischen dem Doppelpunkt und Ihrer Beschreibung ein, um eine Trennlinie einzufügen. Dies hilft, Ihren Code noch besser zu organisieren. Der Code und der Screenshot oben verwenden den MARK-Kommentar mit einer Zeile.
Dies funktioniert nur mit dem MARK-Kommentar.
quelle
Sie könnten auch an Swift 4.2 / XCode 10- Compiler-Direktiven wie interessiert sein
und
Es kann nützlich sein, wenn Sie wirklich nichts verpassen möchten.
quelle
Professionelle Programmierer müssen dieses Tag für guten Code verwenden. Es ist auch gut für die Teamarbeit.
Es ist leicht, eine solche Methode zu finden
quelle
In Xcode 11 wurde eine Minikarte hinzugefügt, die aktiviert werden kann
Editor -> Minimap
.Die Minikarte zeigt jeden Markentext zur schnellen Orientierung im Code an. Jede Marke ist wie geschrieben
// MARK: Variables
quelle
//MARK:
scheint für mich in Xcode 6.3.2 nicht zu funktionieren. Dies habe ich jedoch getan, um es zum Laufen zu bringen :1) Code:
2) In der
jump bar
scheint sich beim Hinzufügen des//MARK
: Kommentars nichts zu ändern . Wenn ich jedoch auf den Namen ganz rechts in der Sprungleiste klicke, heißt es in meinem FallMainWindowController(with a leading C icon)
, wird ein Popup-Fenster mit den Auswirkungen des Kommentars // MARK: angezeigt, nämlich eine Überschrift mit der Aufschrift "Meine coolen Methoden":3) Ich stelle auch fest, dass, wenn ich auf eine der Methoden in meinem Code klicke, die Methode zum Eintrag ganz rechts in der Sprungleiste wird. Um
MainWindowController(with a leading C icon)
der Eintrag ganz rechts in der Sprungleiste zu sein, muss ich auf das Leerzeichen über meinen Methoden klicken.quelle
Apple gibt in der neuesten Version von Building Cocoa Apps an :
Das # -Zeichen scheint immer noch so zu sein, wie Sie mit verschiedenen Build-Konfigurationen und ähnlichen Dingen arbeiten, aber es sieht so aus, als würden sie versuchen, Ihren Bedarf an Vorverarbeitung im Sinne von Pragma zu verringern und Sie insgesamt an andere Sprachfunktionen weiterzuleiten. Vielleicht soll dies dazu beitragen, dass die Spielplätze und die REPL so nah wie möglich am vollständig kompilierten Code sind.
quelle
quelle
Versuche dies:
quelle
Pragma Mark ist eine Möglichkeit, die Lesbarkeit Ihres Codes zu verbessern. Die Pragma-Kommentare werden wie Tags in der Xcode-Sprungleiste angezeigt.
Beispiel: Im Code
So würde es in der Xcode-Sprungleiste erscheinen.
quelle