我有一个包含类B属性的类A.类B对其“父”类A有一个弱引用。这两个类都实现了NSCopying。
我不知道在B组中应该如何实施NSCopying。我看到两个明显的选择:
在第一种情况下,B中的父属性将指向原始A.在第二种情况下,父属性是一个全新的副本。
如何正确复制B类,以便在NSCopying过程中父属性指向新创建的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;
}
我认为最简单的方法是从类A中的copyWithZone更新父属性:但是有什么方法可以在B类中这样做吗?
答案 0 :(得分:3)
我记得在解压缩时这一直是一个问题,所以在我的情况下解决这个问题的唯一方法是在我扩展的Apple类的类别中调用copyWithZone:方法,然后在收到副本后我去了通过B类对象列表并更新其父引用。