Я создал собственный класс, который соответствует 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
изменчивыми.
Любая помощь приветствуется.
NSMutableArray
? - person   schedule 13.02.2013copy
? - person Jesse Rusak   schedule 13.02.2013setArray:
? - person   schedule 13.02.2013