0

私はobjective-cを学んでいますが、答えが見つからないことがあります。

クラスのパブリック インターフェイスでプロパティを宣言しました。そのクラスでは、プロパティを合成せずに、アンダースコアを使用して ivar に直接アクセスできます。

例えば:
// Class.h @property (nonatomic, strong) NSString *someString; // Class.m _someString = something;

しかし、そのクラスをサブクラス化すると、追加のコードなしでセッターとゲッターにアクセスできますが、プロパティを明示的に合成しない限り、ivar に直接アクセスすることはできません。これは、スーパークラスで必要な手順ではありません。

同じスーパークラスの 2 つのサブクラスがあり、それぞれがスーパークラスのプロパティに独自の値を持っているため、サブクラスに固有の ivar が作成されるという事実を知っています。ivar に直接アクセスしたい場合、サブクラスを明示的に合成する必要がある理由がわかりません。

それは実際には問題ではありませんが、好奇心です。

4

0 に答える 0