In Objective-C bin ich neugierig, wie Zugriffssteuerungen für Instanzvariablen wie @private
, @protected
usw. implementiert sind.Wie wird @private implementiert?
Ich hatte angenommen, dass getrennte Strukturen wurden in gewisser Weise wie diese erzeugt wird:
entlang der Linien vonstruct Class_Foo_Protected {
int bar;
};
struct Class_Foo_Private {
int baz;
};
struct Class_Foo_Public {
int qux;
};
Aber ich habe wirklich keine Ahnung
@interface Foo {
int bar;
@private
int baz;
@public
int qux;
}
=>
etwas. Wer weiß, wie das wirklich gemacht wurde?
Sehr interessant, danke. –
Um das klarzustellen, können Sie Runtime-Methoden verwenden, um auf jeden Ivar jeder Klasse zuzugreifen, und nichts wird Sie davon abhalten (abgesehen von der allgemeinen Umgehung dieser Vorgehensweise). '@ private' ist reine Metadaten für den Compiler, und nichts mehr. –