@property
は、実装ではなくインターフェイスを定義します。あなたの場合は、readwriteプロパティを定義しています。つまり、-myObject
と-setMyObject:
を実装すると約束しています。これは象牙とは関係ありません。
ここで、これらのメソッドを実装する最も一般的な方法は、それらをivarでバックすることです。便利なように、ObjCは、@synthesize myObject=myObject_;
を使用してivarストアで必要なメソッドを自動的に生成させることができます。これは、myObject
プロパティに必要なメソッドを作成し、myObject_
という名前の自動的に作成されたivarを使用します。 ivar myObject_
は実際のivarです。通常はアクセスできますが(通常は使用しないでくださいが、アクセサーを使用する必要があります)。
@synthesize
の代わりに、-myObject
と-setMyObject:
を実装することができます。あなたは@dynamic myObject;
を使ってコンパイラに "このプロパティの実装について心配する必要はなく、実行時に正しく処理されます。"
あり@property
とちょうど宣言する方法はいくつかの違いがありますが、原則的には、この行:
@property (nonatomic, readwrite, strong) MyObject* myObject;
は概念的にこれと同じである:
IVARを宣言
- (MyObject *)myObject;
- (void)setMyObject:(MyObject *)anObject;
自分がノーを持っていますここに本当の影響があります。あなたはまだ何らかの形でメソッドを実装する必要があります。あなたの指定されたivarがivarと同じ場合は@synthesize
が使用され、@synthesize
は新しいivarを作成しません。
実際には、私はもうイワールを宣言しないようにしています。私はちょうど@synthesize
と公開と私有のプロパティを使用して、必要なivarsを作成することをお勧めします。なんらかの理由でマニュアルのivarが必要な場合は、@interface
ではなく@implementation
ブロックで宣言することをお勧めします。
あなたの質問は何ですか? –