我已经创建了符合自定义类NSCopying
和NSMutableCopying
。
我已经添加了一个实现-copyWithZone:
和-mutableCopyWithZone:
但每当我打电话-mutableCopy
我的对象,并尝试调用另一个方法,它崩溃,因为一些高德已经成为不可改变的,即使我呼吁-mutableCopyWithZone:
上实例变量。
下面是我如何复制我的课:
MyObject *flipped = [list mutableCopy];
[MyObject flip:flipped];
(代码失败上+flip:
,因为它尝试使用removeObjectAtIndex:
和addObject:
上NSMutableArray
的ivar)
下面是我如何复制类:
- (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
可变的。
任何帮助表示赞赏。