Question

Dans Objective-C, je suis curieux de savoir comment les contrôles d'accès aux variables d'instance, comme @private, @protected, etc. sont mises en œuvre.

J'avais considéré que des structures distinctes ont été générées en quelque sorte comme ceci:

@interface Foo {
  int bar;
  @private
  int baz;
  @public
  int qux;
}

=> quelque chose le long des lignes de

struct Class_Foo_Protected {
  int bar;
};

struct Class_Foo_Private {
  int baz;
};

struct Class_Foo_Public {
  int qux;
};

Mais je ne sais vraiment pas. Quelqu'un sait comment cela a été vraiment fait?

Était-ce utile?

La solution

Ces modificateurs ne changent rien au sujet de la mise en page de la mémoire de votre classe. Le compilateur se souvient que Ivar est publique, protégée ou privée et émet des erreurs si vous essayez d'y accéder de quelque part inappropriée. Tout cela est fait avant que le code est généré et ne modifie pas le code généré.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top