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?

È stato utile?

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
scroll top