クラス B のプロパティを含むクラス A があります。クラス B には、その「親」クラス A への弱い参照があります。両方のクラスが NSCopying を実装しています。
クラス B で NSCopying をどのように実装する必要があるかはわかりません。2 つの明白な選択肢があります。
- 親プロパティをコピーしたクラスに割り当てます
- 親プロパティをコピーして、コピーしたクラスに割り当てます
最初のケースでは、B の親プロパティは元の A を指します。2 番目のケースでは、親プロパティは完全に新しいコピーです。
NSCopying のプロセス中に親プロパティが新しく作成された 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;
}
最も簡単な方法は、クラス A の copyWithZone: から親プロパティを更新することだと思います。しかし、クラス B 内からそれを行う方法はありますか?