Welche Bedeutung haben # Pragma-Zeichen? Warum brauchen wir # Pragma-Zeichen?

279

Was ist der Zweck von #pragmaMarken in Xcode? Ist ihr Speicherort in .mDateien wichtig? Sollten einige #pragmavor allen anderen kommen?

  • Müssen sie anwesend sein?
  • Können neue Marken hinzugefügt werden? Warum sollten sie sein? Was verursacht es?
  • Kann es schaden, wenn eine Markierung entfernt wird? Würde man jemals wollen?
James Raitsev
quelle
5
Überprüfen Sie den Link: cocoasamurai.blogspot.com/2006/09/…
rptwsthi
Ich persönlich mag sie nicht. Im Ernst, Sie möchten die ganze Zeit darüber nachdenken, wo Sie eine Methode einsetzen müssen? Es gibt viel wichtigere Dinge, die organisiert bleiben müssen, wie das Prinzip der Einzelverantwortung zu beachten
Brad Thomas
2
Für eine schnelle Sprache funktioniert das # Pragma-Zeichen nicht. Verwenden Sie #MARK oder #FIXME oder #TODO. Überprüfen Sie diesen Link auf weitere Informationen. Stackoverflow.com/a/33040068/1753005
Jayprakash Dubey

Antworten:

315

#pragma markAnweisungen werden in Xcode in den Menüs für den direkten Zugriff auf Methoden angezeigt. Sie haben überhaupt keinen Einfluss auf das Programm.

Wenn Sie es beispielsweise mit Xcode 4 verwenden, werden diese Elemente direkt in der Sprungleiste angezeigt.

Es gibt ein Special pragma mark -, das eine Linie erzeugt.

Geben Sie hier die Bildbeschreibung ein

Erre Efe
quelle
Schätzen Sie die Antwort - könnten Sie eine aktualisierte Antwort veröffentlichen, die zeigt, wie Pragma-Markierungen im neuen XCode aussehen (in diesem Menü oder wo immer sie jetzt sind)?
user7804781
Gibt es ein Python-Äquivalent?
Edward Falk
@ EdwardFalk Es ist IDE-spezifisch, also hängt es wirklich von Ihrem IDE / Texteditor ab
Michael Ozeryansky
Mein GCC-Compiler gab die Warnung foo.h: 52: 0: Warnung: Ignorieren der # Pragma-Marke [-Wunknown-Pragmas] # Pragma-Marke -, was nicht fatal ist. Also weiß gcc wahrscheinlich nichts über '-'.
Kemin Zhou
55

#pragma markwird verwendet, um die Gruppe von Methoden zu kennzeichnen, damit Sie Methoden in der Sprungleiste leicht finden und erkennen können. Es kann Ihnen helfen, wenn Ihre Codedateien ungefähr 1000 Zeilen erreichen und Sie schnell Methoden über die Kategorie aus dem Sprungfeld finden möchten.

In einem langen Programm wird es schwierig, sich einen Methodennamen zu merken und zu finden. Mit Pragma Mark können Sie Methoden nach ihrer Arbeit kategorisieren. Sie haben beispielsweise ein Tag für Table View-Protokollmethoden, AlertView-Methoden, Init-Methoden, Deklaration usw. markiert.

#pragma markist die Funktion für XCode, hat jedoch keine Auswirkungen auf Ihren Code. Es hilft lediglich, das Auffinden von Methoden beim Codieren zu erleichtern.

dayitv89
quelle
21

Mit einfachen Worten können wir sagen, dass dies #pragma mark -zur Kategorisierung von Methoden verwendet wird, damit Sie Ihre Methoden leicht finden können. Es ist sehr nützlich für lange Projekte.

Spieler
quelle
13

Nur um die Informationen hinzuzufügen, nach denen ich gesucht habe: pragma markIst Xcode-spezifisch. Wenn Sie sich also mit einem C ++ - Projekt befassen, das Sie in verschiedenen IDEs öffnen, hat dies dort keine Auswirkungen. In Qt Creator werden beispielsweise keine Kategorien für Methoden hinzugefügt und keine Warnungen / Fehler generiert.

BEARBEITEN

#pragmaist eine Präprozessor-Direktive, die aus der Programmiersprache C stammt. Der Zweck besteht darin, dem Compiler implementierungsabhängige Informationen anzugeben. Das heißt, jeder Compiler kann diese Anweisung so interpretieren, wie er möchte. Das heißt, es wird eher als Erweiterung betrachtet, die den Code selbst nicht ändert / beeinflusst. Compiler könnten es also genauso gut ignorieren.

Xcode ist eine IDE, die #pragmasie auf ihre eigene Art nutzt und nutzt. Der Punkt ist, #pragmaist nicht Xcode und sogar Objective-C-spezifisch.

Maxim Chetrusca
quelle
11

Wenn wir eine große / lange Klasse haben, die mehr als 100 Codezeilen sagt, können wir nicht alles auf dem Monitorbildschirm sehen, daher können wir keine Übersicht (auch Dokumentelemente genannt) unserer Klasse sehen. Irgendwann wollen wir einen Überblick über unsere Klasse sehen; Alle Methoden, Konstanten, Eigenschaften usw. auf einen Blick. Sie können in XCode Strg + 6 drücken, um eine Übersicht über Ihre Klasse anzuzeigen. Sie erhalten eine Art Popup-Fenster, auch bekannt als Jump Bar.

Standardmäßig hat diese Sprungleiste keine Eimer / Abschnitte. Es ist nur eine lange Liste. (Obwohl wir einfach mit der Eingabe beginnen können, wenn die Sprungleiste angezeigt wird und zwischen den Elementen der Sprungleiste gesucht wird). Hier kommt die Notwendigkeit vonpragma mark

Wenn Sie Abschnitte in Ihrer Sprungleiste erstellen möchten, können Sie Pragma-Markierungen mit entsprechender Beschreibung verwenden. Beziehen Sie sich nun auf den fraglichen Schnappschuss. Dort sind 'View lifeCycle' und 'Ein Abschnitt gewidmet ..' Abschnitte, die von pragma marks erstellt wurden

Saurabh Hooda
quelle
10

Bei der Suche nach doc, um darauf hinzuweisen, wie Pragma Direktiven für den Compiler sind, habe ich dies gefunden NSHipster-Artikel gefunden , der die Arbeit ziemlich gut macht.

Ich hoffe, Sie werden die Lektüre genießen

Teriiehina
quelle
7
#pragma mark - NSSecureCoding

Der Hauptzweck von "Pragma" ist die Referenz für Entwickler.Geben Sie hier die Bildbeschreibung ein

Sie können eine Methode / Funktion in Tausenden von Codierungszeilen leicht finden.

Xcode 11+:

Markierungslinie oben

// MARK: - Properties

Markierungslinie oben und unten

// MARK: - Properties - 

Markierungslinie nur unten

// MARK: Properties -
Jeba Moses
quelle
Also kann ich die Linie entfernen? Es ist Platzverschwendung für mein Gehirn.
1
Das Entfernen von # pragma-mark hat keine Auswirkungen auf die Funktionalität Ihres Codes, aber Ihr Code kann seine Lesbarkeit verlieren. Wenn Sie wirklich nicht wollen, können Sie es entfernen.
Jeba Moses