NSCopying
및 NSMutableCopying
을 준수하는 맞춤 클래스를 만들었습니다.-mutableCopyWithZone 사용 : 맞춤 클래스에서 변경 불가능하게 함
나는 -copyWithZone:
및 -mutableCopyWithZone:
에 대한 구현을 추가했습니다,하지만 난 내 개체에 -mutableCopy
를 호출하고 다른 방법을 호출 할 때마다 인스턴스 변수 중 일부는 불변되기 때문에, 그것은 내가 인스턴스 변수에 -mutableCopyWithZone:
전화에도 불구하고, 충돌합니다.
MyObject *flipped = [list mutableCopy];
[MyObject flip:flipped];
다음
내가 복사하고있어 방법 (코드 +flip:
에 실패 그것이 NSMutableArray
바르에 removeObjectAtIndex:
및 addObject:
를 사용하려고하기 때문에,) : 나는 내 수업을 복사 해요 방법은 다음과
입니다 수업 :
- (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 ivar에서 removeObjectAtIndex : 및 addObject :를 사용하려고하므로 + flip :에서 코드가 실패합니다."- 실제로는 NSMutableArray입니까? –
배열 또는 객체 속성이'copy'로 선언되어 있습니까? –
런타임시 NSMutableArray가 아니며 __NSArrayI이지만 코드에서 NSMutableArray로 정의됩니다. –