1020 Stimmen

#pragma mark in Swift?

In Objective C, I can use #pragma mark to mark sections of my code in the symbol navigator. Since this is a C preprocessor command, it's not available in Swift. Is there a stand-in for this in Swift, or do I have to use ugly comments?

In Objective C kann ich #pragma mark verwenden, um Abschnitte meines Codes im Symbolnavigator zu markieren. Da dies ein C-Präprozessor-Befehl ist, ist es in Swift nicht verfügbar. Gibt es einen Ersatz dafür in Swift, oder muss ich hässliche Kommentare verwenden?

1293voto

Frank Schmitt Punkte 25250

Sie können // MARK: verwenden


Es wurde auch diskutiert, dass der häufige Gebrauch von Klassenerweiterungen sowieso eine bessere Praxis sein könnte. Da Erweiterungen Protokolle implementieren können, können Sie z.B. alle Methoden Ihres Table View Delegaten in einer Erweiterung platzieren und Ihren Code auf einer semantischeren Ebene gruppieren als es #pragma mark ermöglicht.

198voto

Ronny Webers Punkte 5104

Bis Xcode 5 existierte die Präprozessor-Direktive #pragma mark.

Ab Xcode 6 musst du // MARK: verwenden

Diese Präprozessor-Funktionen ermöglichen es, etwas Struktur in die Funktionsauswahlliste des Quellcode-Editors zu bringen.

Einige Beispiele :

// MARK:

-> wird von einem horizontalen Trennzeichen vorangestellt

// MARK: dein Text hier

-> setzt 'dein Text hier' fettgedruckt in der Auswahlliste

// MARK: - dein Text hier

-> setzt 'dein Text hier' fettgedruckt in der Auswahlliste, vorangestellt von einem horizontalen Trennzeichen

Aktualisierung: Ein Screenshot hinzugefügt, da einige Leute immer noch Probleme damit zu haben scheinen :

Bildbeschreibung hier eingeben

177voto

NatashaTheRobot Punkte 6734

Für diejenigen, die daran interessiert sind, Erweiterungen vs. Pragma-Markierungen zu verwenden (wie im ersten Kommentar erwähnt), hier ist, wie man es von einem Swift-Ingenieur implementiert:

import UIKit

class SwiftTableViewController: UITableViewController {

    init(coder aDecoder: NSCoder!) {
        super.init(coder: aDecoder)

    }

    override func viewDidLoad() {
        super.viewDidLoad()

    }
}

extension SwiftTableViewController {
    override func numberOfSectionsInTableView(tableView: UITableView?) -> Int {
        return 1
    }

    override func tableView(tableView: UITableView?, numberOfRowsInSection section: Int) -> Int {
        return 5
    }

    override func tableView(tableView: UITableView?, cellForRowAtIndexPath indexPath: NSIndexPath?) -> UITableViewCell? {
        let cell = tableView?.dequeueReusableCellWithIdentifier("myCell", forIndexPath: indexPath) as UITableViewCell;

        cell.textLabel.text = "Hallo Welt"

        return cell
    }

}

Es ist auch nicht unbedingt die beste Praxis, aber so macht man es, wenn man möchte.

146voto

Jayprakash Dubey Punkte 34167

Pragma mark - [SOME TEXT HERE] wurde in Objective-C verwendet, um mehrere Funktionen zusammenzufassen durch Zeilentrennung.

In Swift können Sie dies mit MARK, TODO ODER FIXME erreichen

i. MARK : //MARK: viewDidLoad

Dies erstellt eine horizontale Linie mit Funktionen, die unter viewDidLoad gruppiert sind (in screenshot 1 dargestellt)

Screenshot 1

ii. TODO : //TODO: - viewDidLoad

Dadurch werden Funktionen unter der Kategorie TODO: - viewDidLoad gruppiert (in screenshot 2 dargestellt)

Screenshot 2

iii. FIXME : //FIXME - viewDidLoad

Dadurch werden Funktionen unter der Kategorie FIXME: - viewDidLoad gruppiert (in screenshot 3 dargestellt)

Screenshot 3

Überprüfen Sie diese Apple-Dokumentation für weitere Details.

102voto

George Punkte 2904

Xcode Offizielle Dokumentation

Der aktuelle offizielle Dokumentationsbereich von Apple Kommentieren Sie Ihren Code für Sichtbarkeit stellt drei Kommentare vor: TODO:, FIXME: und MARK:.

Zwei weitere Kommentare (obwohl sie nicht in der offiziellen Dokumentation erscheinen) werden von der neuesten Xcode-Version (v14.2) unterstützt: !!!: und ???:.

Hinweis: !!!: und ???: werden aus unbekannten Gründen in einigen Xcode-Versionen (wie v10.0) nicht unterstützt.

Beispiel-Screenshot 1 - Xcode 14.2 + macOS 13.1 (Ventura)

Beispiel-Screenshot 2 - Xcode 10.1 + macOS 10.14.3 (Mojave)

code_xcode_10_1 jump_bar_xcode_10_1

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X