2013-06-13 5 views
3

클래스 B에 속성이 들어 있습니다. 클래스 B에는 "부모"클래스에 대한 약한 참조가 있습니다. 두 클래스 모두 NSCopying을 구현합니다. 올바르게 복사 된 부모를 가리 키도록 "부모"속성을 NSCopying합니다.

  • 부모의 속성을 복사하여 지정 복사 된 클래스에 부모의 속성을 지정

    1. :

      나는 두 개의 분명한 선택을 참조 NSCopying가 클래스 B에서 구현하는 방법을 정확히 모르는 복사 된 클래스에

    첫 번째 경우 B의 부모 속성은 원본 A를 가리 킵니다. 두 번째 경우의 부모 속성은 완전히 새로운 복사본입니다.

    NSCopying 과정에서 상위 속성이 새로 만든 A 사본을 가리킬 수 있도록 클래스 B를 올바르게 복사하려면 어떻게해야합니까? 클래스 A의하지만 클래스 B 내에서 그렇게 할 수있는 방법이있다 :

    -(id) copyWithZone:(NSZone*)zone 
    { 
        MyClassB* copy = [[[self class] allocWithZone:zone] init]; 
        copy->_parent = _parent; // <<-- should reference the new copy of A, but how? 
        return copy; 
    } 
    

    내가 가장 쉬운 방법은 copyWithZone에서 부모 속성을 업데이트 할 것이라고 생각?

  • 답변

    3

    보관하는 동안 문제가 발생했다는 것을 기억했기 때문에 제 경우에는이 문제를 해결할 수있는 유일한 방법은 확장 된 Apple 클래스의 카테고리에서 copyWithZone : 메서드를 사용하는 것입니다. 클래스 B 객체의 목록을 살펴보고 부모 참조를 업데이트하십시오.