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。
助けていただければ幸いです。