我有一个包含 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 类中这样做吗?