0

.h ファイルのコード

@property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext;

.m ファイルのコード

@synthesize managedObjectContext = __managedObjectContext;

私は目的の c の初心者です @synthesize managedObjectContext; and @synthesize managedObjectContext = __managedObjectContext;。説明できる違いは何ですか?

4

2 に答える 2

3

@synthesize propertyName、プロパティと同じ名前でプロパティをバックアップする変数を作成し、変数に@synthesize propertyName = variableName別の名前 (おそらくアンダースコアがプレフィックスとして付けられたプロパティ名) を与えます。

最新バージョンの Xcode に同梱されているコンパイラでは、使用@synthesizeする必要がなくなっていることに注意してください。コンパイラは、どのプロパティを合成する必要があるかを判断し、暗黙的に挿入します。

@synthesize propertyName = _propertyName;

合成が必要な各プロパティに対して。

于 2013-04-04T11:11:11.423 に答える
0

使用する場合

@synthesize managedObjectContext = __managedObjectContext;

次のような行を書くことができます:

__managedObjectContext = someContext;

また、setManagedObjectContext: メソッドを使用せずに、このプロパティに直接アクセスして、このプロパティに格納されている値を変更します。

ただし、この行は正しくありません (その前に他の managedObjectContext を宣言しない限り)。

managedObjectContext = someContext; //wrong
self.managedObjectContext = someContext; //good

PS ところで、@synthesize は正確に何をしますか?

于 2013-04-04T11:18:11.013 に答える