3

クラス B のプロパティを含むクラス A があります。クラス B には、その「親」クラス A への弱い参照があります。両方のクラスが NSCopying を実装しています。

クラス B で NSCopying をどのように実装する必要があるかはわかりません。2 つの明白な選択肢があります。

  1. 親プロパティをコピーしたクラスに割り当てます
  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 内からそれを行う方法はありますか?

4

1 に答える 1