@Privateはどのように実装されていますか?
-
08-10-2019 - |
質問
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が公開、保護、またはプライベートであることを覚えており、不適切な場所からアクセスしようとするとエラーを放出します。これはすべて、コードが生成される前に行われ、生成されたコードに影響しません。
所属していません StackOverflow