NSCopying
とに準拠するカスタムクラスを作成しましたNSMutableCopying
。
との実装を追加しましたが、オブジェクトを呼び出して別のメソッドを呼び出そうとすると、ivarを呼び出しても、一部のivarが不変になっているため、クラッシュし-copyWithZone:
ます。-mutableCopyWithZone:
-mutableCopy
-mutableCopyWithZone:
クラスをコピーする方法は次のとおりです。
MyObject *flipped = [list mutableCopy];
[MyObject flip:flipped];
(コードは、ivarで+flip:
使用しようとするため、removeObjectAtIndex:
失敗します)addObject:
NSMutableArray
クラスをコピーする方法は次のとおりです。
- (id)mutableCopyWithZone:(NSZone *)zone {
id instance = nil;
if ((instance = [[[self class] alloc] init])) {
[instance setArray:[self.array mutableCopyWithZone:zone]];
[instance setObjects:[self.objects mutableCopyWithZone:zone]];
[instance setItemCount:self.itemCount];
}
return instance;
}
なぜ失敗するのかはわかりませんが、なぜそれが作成されず、変更可能でないのかは本当にわかりませarray
んobjects
。
助けていただければ幸いです。