Objective c 正确地选择“a”;“家长”;属性,使其指向已复制的父对象

Objective c 正确地选择“a”;“家长”;属性,使其指向已复制的父对象,objective-c,nscopying,copywithzone,Objective C,Nscopying,Copywithzone,我有一个包含类B属性的类a。类B对其“父”类a有弱引用。这两个类都实现了NSCopying 我不知道在B类中应该如何实现NSCopying。我看到两个明显的选择: 将父属性指定给复制的类 复制父属性并将其指定给复制的类 在第一种情况下,B中的父属性将指向原始A。在第二种情况下,父属性是一个全新的副本 如何正确复制B类,以便父属性在复制过程中指向A的新创建副本 -(id) copyWithZone:(NSZone*)zone { MyClassB* copy = [[[self class

我有一个包含类B属性的类a。类B对其“父”类a有弱引用。这两个类都实现了NSCopying

我不知道在B类中应该如何实现NSCopying。我看到两个明显的选择:

  • 将父属性指定给复制的类
  • 复制父属性并将其指定给复制的类
  • 在第一种情况下,B中的父属性将指向原始A。在第二种情况下,父属性是一个全新的副本

    如何正确复制B类,以便父属性在复制过程中指向A的新创建副本

    -(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;
    }
    
    -(id)copyWithZone:(NSZone*)区域
    {
    MyClassB*copy=[[[self-class]allocWithZone:zone]init];
    
    copy->\u parent=\u parent;//我记得在取消归档时这一直是一个问题,所以在我的例子中,解决这个问题的唯一方法是在我扩展的Apple类的一个类别中使用copyWithZone:方法,然后在收到副本后,我查看B类对象的列表并更新它们的父引用