@synthesize
これらのプロパティのを削除します。彼らはget/setを提供しました。
編集:明確にするために。.hで、acceptableStatusCodesを次のように宣言します
NSIndexSet * _acceptableStatusCodes;
と
@property (copy, readwrite) NSIndexSet * acceptableStatusCodes;
次に、.mで、彼らは持っています
@synthesize acceptableStatusCodes = _acceptableStatusCodes;
と
- (NSIndexSet *)acceptableStatusCodes
{
return [[self->_acceptableStatusCodes retain] autorelease];
}
- (void)setAcceptableStatusCodes:(NSIndexSet *)newValue
{
if (self.state != kQRunLoopOperationStateInited) {
assert(NO);
} else {
if (newValue != self->_acceptableStatusCodes) {
[self willChangeValueForKey:@"acceptableStatusCodes"];
[self->_acceptableStatusCodes autorelease];
self->_acceptableStatusCodes = [newValue copy];
[self didChangeValueForKey:@"acceptableStatusCodes"];
}
}
}
これらの2つのブロック(合成とメッセージの実装)は両方とも同じメッセージを定義しているため、競合しています。setメッセージは、最初に自動生成された合成が実行しない追加のチェック(kQRunLoopOperationStateInitedのチェック)を実行するため、とにかく無視されている合成を削除します。
セットメッセージは、コピーセマンティクスを正しく実装しています。
self->_acceptableStatusCodes = [newValue copy];
そして、それは古い値を解放します。また、keyValue変更通知も行います。なぜ彼らが合成に残ったのかわかりません-彼らは後で状態チェックを望んでいたようで、自動生成されたget/setを削除するのを忘れていたようです。