で@synthesizeを使用して生成しました私。また、ドキュメントによれば、setterにはスレッドセーフティコードが組み込まれています。拡張プロパティは、私は@propertyはこのように宣言していたとのObjective-C
ここで、setSomeObject:メソッドにいくつかのコードを追加したいとします。既存のものを@synthesizeから拡張できる方法はありますか?私はそれが自動生成するスレッドセーフティコードを再利用できるようにしたい。あなたはこのコードを使用してメソッドを拡張することができます
-(void)setSomeObject:(NSObject *)anObject {
[anObject retain];
[someObject release];
someObject = anObject;
}
または
-(void)setSomeObject:(NSObject *)anObject {
if(someObject != anObject) {
[someObject release];
someObject = [anObject retain];
}
}
:何@synthesize
@synchronizedはおそらくNSLockよりも優れています。 –
@unwesen:そうです。なぜ私はそれを考えなかったのですか? –
KVOの呼び出しを忘れないでください: [self willChangeValueForKey:@ "someObject"]; ... [自己didChangeValueForKey:@ "someObject"]; –