如何复制NSObject而不保留对旧复制对象的引用?

时间:2016-02-17 13:02:18

标签: ios nsobject

@class BaseItem : NSObject

@end

我想复制' BaseItem的一个实例,一个新的BaseItem实例。我想保留其所有属性和值,但是,我不想保留旧项目的引用/指针。

2 个答案:

答案 0 :(得分:2)

您需要让BaseItem采用NSCopying协议(即实施copyWithZone:方法),然后您可以执行以下操作:

BaseItem *item = [[BaseItem alloc] init]
BaseItem *copiedItem = [item copy]

P.S:NSObject doesn't support NSCopying本身,因此您需要在班级中明确采用它。

答案 1 :(得分:1)

本地变量默认为strong。 将原始指针设置为nil将删除它。这是ARC在编译期间所做的事情。

BaseItem *baseItem = ...;
BaseItem *baseItem2 = [baseItem copy];
baseItem = nil;