4

効率を上げるために、サブクラスのプロパティに関連付けられているメンバー変数にアクセスしたいと思います。次のように宣言されたプロパティがある場合:

@interface Mumbo : NSObject
    @property (nonatomic) GLKVector3 position;
@end

Mumboの実装では、positionをself.positionとして参照することも、直接_positionとして参照することもできます(デフォルトの合成メンバー変数-@synthesizeは使用していません)。構造のコピーを避けるために、場合によっては効率のために後者を使用します。

ただし、サブクラスでは、インターフェイスを次のように変更しない限り、_positionを参照できません。

@interface Mumbo : NSObject {
    GLKVector3 _position;
}
    @property (nonatomic) GLKVector3 position;
@end

これはうまくいくようです。ただし、自動的に合成されたメンバー変数は、中括弧で明示的に宣言したものと一致することが保証されていますか?この件に関する明確なドキュメントが見つかりません。

4

1 に答える 1

3

自動合成された変数は、デフォルトで先頭の下線を使用するため、すぐに使用できます。

ただし、iVarを宣言する方法はパブリックになりますが、自動合成された変数はプライベートになります。そのため、クラス外からアクセスできます。

于 2012-09-02T07:17:45.893 に答える