objective-c - 正确 NSCopying "parent"属性,使其指向其已复制的父级

标签 objective-c nscopying copywithzone

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

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

  1. 将父属性分配给复制的类
  2. 复制父属性并将其分配给复制的类

在第一种情况下,B 中的父属性将指向原始 A。在第二种情况下,父属性是一个全新的副本。

如何在 NSCopying 过程中正确复制类 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;
}

我想最简单的方法是从 A 类中的 copyWithZone: 更新父属性。但是我可以从 B 类中这样做吗?

最佳答案

我记得这在解压时一直是个问题,所以解决这个问题的唯一方法是在我扩展的 Apple 类的类别中调整 copyWithZone: 方法,然后在收到副本后我去通过 B 类对象列表并更新它们的父引用。

关于objective-c - 正确 NSCopying "parent"属性,使其指向其已复制的父级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17089939/

相关文章:

objective-c - 需要一个类似于日志 View 的 View

objective-c - Objective-C 中是否有任何方法与 Swift 中的 "String(_ v: T, radix: Int, uppercase: Bool = default)"具有相同的功能?

ios - 如何正确实现 mutableCopyWithZone 和 copyWithZone

objective-c - NSmanagedObject copyWithZone 问题

ios - 编译项目时出现 Xcode 错误

ios - 如何在 iOS 中播放 .m3u8 或 .ts 文件?

ios - 如何使用 copyWithZone 进行深拷贝以复制结构?

objective-c - 使用-mutableCopyWithZone : on custom class makes it immutable

ios - 如何在复制数组本身时复制 NSArray 的所有对象