Swift: // MARK verstehen


137

Was ist der Zweck des Schreibens von Kommentaren in Swift als:

// MARK: This is a comment

Wenn Sie auch tun können:

// This is a comment

Was bringt das // MARK?

Antworten:


251

Die Syntax // MARK:und // MARK: -in Swift funktioniert identisch mit der Syntax #pragma markund #pragma mark -in Objective-C.

Wenn Sie diese Syntax (Plus // TODO:und // FIXME:) verwenden, können Sie einige zusätzliche Informationen erhalten, die in der Schnellsprungleiste angezeigt werden.

Betrachten Sie diese wenigen Zeilen Quellcode:

// MARK: A mark comment lives here.

func isPrime(_ value: UInt) -> Bool { return true }

Geben Sie hier die Bildbeschreibung ein

Und als Referenz befindet sich die Schnellsprungleiste in Xcode oben:

Geben Sie hier die Bildbeschreibung ein

Es dient hauptsächlich zur schnellen Navigation innerhalb der Datei.

Beachten Sie, dass mit dem Bindestrich ( // MARK: -) eine schöne Trennlinie angezeigt wird. Betrachten Sie diesen MARKKommentar:

// MARK: - A mark comment lives here.

Geben Sie hier die Bildbeschreibung ein

Die dunkelgraue Trennlinie direkt über der fettgedruckten Option in diesem Menü stammt vom Bindestrich.

Zusätzlich können wir diese Trennlinie ohne Kommentar erreichen, indem wir einfach keinen Text nach dem Bindestrich haben:

// MARK: -

Geben Sie hier die Bildbeschreibung ein

Wie bereits erwähnt, // TODO:und // FIXME:Kommentare werden auch hier erscheinen.

// MARK: - Prime functions

func isPrime(_ value: UInt) -> Bool {
    // TODO: Actually implement the logic for this method
    return true
}

func nthPrime(_ value: UInt) -> Int {
    // FIXME: Returns incorrect values for some arguments
    return 2
}

Geben Sie hier die Bildbeschreibung ein

  • FIXMEs erhalten ein kleines Pflaster-Symbol, das ihnen hilft, sich abzuheben.
  • Das MARK-Symbol sieht aus wie ein Inhaltsverzeichnis
  • TODO-Symbole ähneln eher einer Checkliste

Wenn Sie auf eine Zeile in der Schnellsprungleiste klicken, gelangen Sie direkt zu dieser Zeile im Quellcode.


Ist diese Funktionalität spezifisch für Swift / Objective-C oder Xcode?
ma11hew28

Vermutlich Xcode. Ich kann mir jedoch leicht vorstellen, dass andere IDEs möglicherweise ein ähnliches Verhalten aufweisen.
nhgrif

Sie können den Bindestrich auch nach Ihrem Text // MARK: /Delegate impl. -// MARK: - Attention! -
Andreas

7

MARK fügt der Sprungleiste einfach ein visuelles MARK hinzu:

Ex // MARK: Core Data Stack

Geben Sie hier die Bildbeschreibung ein


-5

Sie können immer verwenden

// MARK: - Properties
var name: String

// MARK: - Methods
func display() {
}

init(name: String, rollNumber: Int) {

    // TODO: add configuration code
    self.name = name
}

// FIXME: bug XYZ
func fixBug() {

}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.