모든 목록을 관리하는 Singleton 개체가 있습니다. 우리는 그것을 ListStore라고 부를 것입니다.사용자 지정 개체의 NSCopying 배열
ListStore에는 목록을 저장하는 가변 배열이 있습니다.
@interface ListStore : NSObject
@property (nonatomic, copy) NSMutableArray *lists; // an array of List objects
end
목록에는 Things가 저장되는 가변 배열이 있습니다. 사용자가 목록과 상호 작용 할 수있는 동안 언제든지
@interface Wanderlist : NSObject <NSCoding, NSCopying>
@property (nonatomic, copy) NSMutableArray *things; // an array of Thing objects
@end
는 백그라운드 프로세스 및 프로세스의 모든 목록을 통해 ListStore 및 루프를 통해 갈 수 있습니다.
유형의 오류 "를 열거하면서 변이 된 대상"을 방지하기 위해, 나는 이렇게 : 나는 모든 구성원이 제대로 복사 될 것
newLists
에 복사본을 만들었 기 때문에
내가 원래 생각했다. 나는 이제 그 경우가 아니라는 것을 이해한다 : 열거 된 동안 "객체가 돌연변이 된"오류를 계속보고 있지만, 이번에는 list.things
에서 발생한다.
내가 내 설치를 NSCopying을 사용할 수 있도록 내가 말할 때
[[ListStore sharedStore] copy];
그것은 내가 할 수있는 다음 copyWithZone:
things
에 Lists
에 copyWithZone:
호출, 그래서?
이렇게 설정하려고 시도했지만 copyWithZone:
이 호출되지 않았습니다.
나는 간단히 NSArray *newList = [list.things copy]
라고 말할 수 있지만 적어도 NSCopying에 대해 더 잘 이해하고 싶습니다.