我有一个MyObjects的NSArray。
我想复制数组的最后一个对象。换句话说,我想在数组中添加一个与最后一个完全相同的新对象。
我尝试过:
id object = [[self arrangedObjects] lastObject];
id newObject = [object copy];
但是我意识到我不能使用复制方法,因为它没有在NSObject中实现。
我应该在MyObject类中实现copy方法,返回MyObject的新实例并按如下方式更改代码:
MyObject object = [[self arrangedObjects] lastObject];
MyObject newObject = [object copy];
还有其他solutoins吗?
更新 来自NSObject文档
NSObject本身不支持NSCopying协议。子类 必须支持协议并实现copyWithZone:方法。一个 copyWithZone:方法的子类版本应该发送消息 超级首先,要包含它的实现,除非是子类 直接从NSObject下载。
答案 0 :(得分:1)
如果您的对象是NSObject,则可以创建一个实现NSCopying协议的新NSObject类别。确保遍历所有键并将其值复制到新对象。对于深度复制,您还应该在每个值对象上调用“复制”。
如果您的对象是自定义的,请在其类中实现协议。
如果数组中有混合对象,那么所有这些对象都必须实现NSCopying协议,在声明它们时可以使用id <NSCopying>
来避免编译时警告/错误。
答案 1 :(得分:0)