質問

Objective-Cでは、アクセスがどのように変数を制御するかに興味があります。 @private,@protected, 、などが実装されています。

私は、このように、別々の構造が何らかの形で生成されていると考えていました。

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

=> の線に沿って何か

struct Class_Foo_Protected {
  int bar;
};

struct Class_Foo_Private {
  int baz;
};

struct Class_Foo_Public {
  int qux;
};

しかし、私には本当にわかりません。誰かがこれが本当に行われたことを知っていますか?

役に立ちましたか?

解決

これらの修飾子は、クラスのメモリレイアウトについて何も変更しません。コンパイラ自体は、IVARが公開、保護、またはプライベートであることを覚えており、不適切な場所からアクセスしようとするとエラーを放出します。これはすべて、コードが生成される前に行われ、生成されたコードに影響しません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top