我需要深度复制一个拥有自己对象的自定义对象。我一直在阅读,对于如何继承 NSCopying 以及如何使用 NSCopyObject 有点困惑。
最佳答案
与引用类型一样,“复制”有两个概念。我相信你知道他们,但为了完整性。
你想要后者。如果这是您自己的对象之一,您只需采用协议(protocol) NSCopying 并实现 -(id)copyWithZone:(NSZone *)zone。你可以自由地做任何你想做的事;尽管这个想法是您制作自己的真实副本并将其归还。您在所有字段上调用 copyWithZone 以进行深层复制。一个简单的例子是
@interface YourClass : NSObject <NSCopying>
{
SomeOtherObject *obj;
}
// In the implementation
-(id)copyWithZone:(NSZone *)zone
{
// We'll ignore the zone for now
YourClass *another = [[YourClass alloc] init];
another.obj = [obj copyWithZone: zone];
return another;
}
https://stackoverflow.com/questions/1459598/