Was @private
bedeutet in Objective-C?
ios
objective-c
cocoa
private
Jeff Wolski
quelle
quelle
Antworten:
Es handelt sich um einen Sichtbarkeitsmodifikator. Dies bedeutet, dass Instanzvariablen, die als deklariert
@private
sind, nur von Instanzen derselben Klasse aufgerufen werden können . Auf private Mitglieder können Unterklassen oder andere Klassen nicht zugreifen.Beispielsweise:
Zur Verdeutlichung sind Methoden in Objective-C immer öffentlich. Es gibt jedoch Möglichkeiten, Methodendeklarationen zu "verbergen". Weitere Informationen finden Sie in dieser Frage .
quelle
Wie gesagt, es ist ein Sichtbarkeitsmodifikator.
@private
bedeutet, dass auf ivar (Instanzvariable) nur direkt aus einer Instanz derselben Klasse zugegriffen werden kann. Das bedeutet Ihnen jedoch möglicherweise nicht viel. Lassen Sie mich Ihnen ein Beispiel geben. Derinit
Einfachheit halber werden wir die Methoden der Klassen als Beispiele verwenden. Ich werde inline kommentieren, um auf interessante Punkte hinzuweisen.Um Ihre Frage zu beantworten, schützt @private ivars vor dem Zugriff durch eine Instanz einer anderen Klasse. Beachten Sie, dass zwei Instanzen von MyFirstClass direkt auf alle Ivars des jeweils anderen zugreifen können. Es wird davon ausgegangen, dass der Programmierer diese Fähigkeit mit Bedacht einsetzen wird, da er direkt die vollständige Kontrolle über diese Klasse hat.
quelle
@private
die Vorlage für ein Objekt einfügt , ist dies nicht mehr so ungewöhnlich.@implementation
Block platziert werden . Und sobald Sie dies tun, sind sie unabhängig von den Sichtbarkeitsmodifikatoren praktisch privat, da sie für niemanden außerhalb dieser Datei sichtbar sind.Es ist wichtig zu verstehen, was es bedeutet, wenn jemand sagt, dass Sie nicht auf eine
@private
Instanzvariable zugreifen können. Die wahre Geschichte ist, dass der Compiler Ihnen einen Fehler gibt, wenn Sie versuchen, auf diese Variablen in Ihrem Quellcode zuzugreifen. In früheren Versionen von GCC und XCode wurde anstelle eines Fehlers nur eine Warnung angezeigt.In jedem Fall sind zur Laufzeit alle Wetten ungültig. Auf diese
@private
und@protected
ivars kann ein Objekt jeder Klasse zugreifen. Diese Sichtbarkeitsmodifikatoren machen es nur schwierig, den Quellcode in Maschinencode zu kompilieren, der die Absicht der Sichtbarkeitsmodifikatoren verletzt.Verlassen Sie sich aus Sicherheitsgründen nicht auf ivar-Sichtbarkeitsmodifikatoren! Sie bieten überhaupt keine. Sie dienen ausschließlich der Durchsetzung der Wünsche des Klassenbauers zur Kompilierungszeit.
quelle