2011-09-26 2 views
1

는 첫째로 내가는 NSCopying 프로토콜을 구현이 있어야합니다있는 NSDictionary의 열쇠로 간단한 NSObject의 서브 클래스를 사용하려면 내가 제대로 NSCopying을 이해 확인 ...NSCopying, copyWithZone NSDictionary와

을하고 싶습니다. 복사 된 인스턴스의 copyWithZone 메소드에서 클래스의 새 인스턴스를 할당/초기화하고 해당 속성을 복사 된 인스턴스와 동일하게 설정 한 다음 반환해야합니다.

둘째, NSDictionary가 인스턴스 자체가 아닌 인스턴스 사본을 사용하는 이유는 무엇입니까?

+0

사전의 키가 복사됩니다. 오브젝트는 유지됩니다. 일반적으로 문자열은 키로 사용되며 NSCopying을 따르므로 아무런 문제가 없습니다. 어떤 이유로 다른 종류의 객체를 사용하고 싶다면 NSCopying을 준수해야합니다. – trudyscousin

+0

답해 주셔서 감사합니다. 키 복사 이유를 설명 할 수 있습니까? – Undistraction

+0

http://stackoverflow.com/questions/2394083/cocoas-nsdictionary-why-are-keys-copied을 (를) 보시려면 – trudyscousin

답변

3

서브 클래스는 개체 인 경우 NSCopying을 구현할 필요가 없으며 키는 일반적으로 NSString입니다.이 키는 복사됩니다.

+0

오른쪽 : 키만 'NSCopying'을 구현해야합니다. – Wevah

+0

죄송합니다. 개체가 키로 사용됩니다. 나는 이것을 반영하기 위해 질문을 수정했다. 그렇다면 객체 자체가 아니라 객체의 복사본이 필요한 이유는 무엇입니까? – Undistraction

+0

이 질문을보십시오 : http://stackoverflow.com/questions/2394083 – hypercrypt

1
  1. 당신은 당신이 그 (것)들을 복사 가능한 수 있도록하려는 경우 모든 사용자 정의 클래스에 대한 NSCopying 프로토콜을 구현해야 원래 사전에 포함 된 개체를 수정 할 경우 복사에 의해 영향을받지 않습니다 때문에 그것은 사본을 사용해야합니다
  2. 변경