Frage

Ich habe gesehen, viele .h (Private APIs) von Apple. Die meisten der Variablen / Strukturen / Aufzählungen / Klassen _ als Präfix.

#import <Foundation/NSValue.h>
#import <Foundation/NSObjCRuntime.h>

@class NSString;

typedef struct _NSRange {
    NSUInteger location;
    NSUInteger length;
} NSRange;

Meine Frage ist,

Was ist Grund geben unterstreichen & typedef sie wieder mit dem richtigen ein?

War es hilfreich?

Lösung

Objective-C hat einen weltweit offenen Namensraum. Es ist wichtig, dass alle Namen eindeutig sein. Zusätzlich zu den genannten Gründen vorher, behält sich Apple-all-Namen für sich selbst unterstreichen. Dies wird dazu beitragen, versehentliche Namenskollisionen zu vermeiden.

Andere Tipps

Es ist im Allgemeinen als ein Flag verwendet, die die fraglichen Einheit ist privat und / oder interne und soll nicht direkt im Code verwendet werden. Ich denke, dass Sie in älteren Versionen von C konnten nicht eine anonyme Struktur deklarieren und so benötigte man einen „Füllstoff“ Namen dort zu setzen.

Ich glaube, das ist um ein unverständlichen Typ zu erstellen. Dies schränkt Kunden von der Art von Zugriff auf interne Details ohne die bereitgestellte Schnittstelle. Anschließend können Sie verwenden, um die Struktur durch eine opaken Zeiger rel="nofollow und Arrays deklarieren können, Variablen, usw. von die Art, ohne sich um die interne Implementierung zu sorgen, dass die Software gewährleistet wird nicht neu kompiliert werden müssen, wenn Apple den Code zu ändern hinter solchen Typen entscheidet.

Für Strukturen erklärt, der Stil typedef struct _name {...} name zu erklären zu den Tagen der GCC 2.0 geht zurück oder so, wenn, wie oben erwähnt wurde, können Sie nicht eine anonyme Struktur haben.

Für die Namen von Ivars, die einzelnen Unterstrich ist ein Apple-interne Codierung Konvention und Apple offiziell gesprochen behält sich alle Namen, die mit einzelnen Unterstrichen beginnen. Wenn Apple Namen alle ihre ivars auf diese Weise, dann werden Sie mit keinem ihrer Namen kollidieren, wenn Sie es nicht tun.

Leider haben viele Beispielcode Projekte wurden ohne Umweg über den Code auf Apples Entwickler-Website veröffentlicht und führenden Unterstrichen auf Ivar Namen zu entfernen. Dies geschieht aus zwei Gründen, die im wesentlichen darauf, dass die Entwickler innerhalb von Apple arbeiten, sind in der Gewohnheit ihre Variablen zu benennen, die Art und Weise, und der andere Grund ist, dass die Menschen Beispielcode Projekte bewerten haben nicht wirklich viel kümmerte sich um eine Standard-Codierung Durchsetzung Stil.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top