Come è @private implementato?
-
08-10-2019 - |
Domanda
In Objective-C, sono curioso come i controlli di accesso per le variabili di istanza, come @private
, @protected
, ecc applicazione.
I aveva considerato che le strutture separate sono state generate, in qualche modo simile a questo:
@interface Foo {
int bar;
@private
int baz;
@public
int qux;
}
=>
qualcosa sulla falsariga di
struct Class_Foo_Protected {
int bar;
};
struct Class_Foo_Private {
int baz;
};
struct Class_Foo_Public {
int qux;
};
Ma io davvero non ho idea. Qualcuno sa come questo è stato davvero fatto?
Soluzione
Quei modificatori non cambia nulla circa il layout della memoria della classe. Il compilatore si ricorda che Ivar è pubblico, protetto o privato ed emette gli errori se si tenta di accedervi da qualche parte inadeguato. Tutto questo è fatto prima che viene generato alcun codice e non influisce sul codice generato.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow