我创建了一个类,它是NSObject的子类(nsme作为GroupClass)。在该类中,我创建了一个属于' id' ,等
@property(nonatomic,retain)id myObj;
现在我站在路上,我有一个可变数组,该数组包含我的GroupClass的实例。所以我以类似的方式获得一个副本
GroupClass* objG=[array objectAtIndex:i];
现在我想要另一个objG.I搜索的副本。我找到了NSCopying Protocol.So我作为委托NSCopying添加到GroupClass并添加了copyWithZone方法。这就是
-(id)copyWithZone:(NSZone *)zone
{
GroupClass *copy = [[[self class] allocWithZone: zone] init];
copy.myObj=[myObj copyWithZone: zone];
return copy;
}
这里我需要深层复制。但是在分配线后它总是崩溃。请帮帮我。谢谢你。
答案 0 :(得分:0)
并非所有NSObject
子类都采用NSCopying
协议。问题听起来就像是将此消息发送给无法识别它的对象。
GroupClass
采用NSCopying
并不重要,这不是问题。你在myObj上调用copyWithZone:无论是什么。
这行代码:
copy.myObj=[myObj copyWithZone: zone];
几乎可以肯定是导致坠机的原因。
修改强>
不知道myObj是什么,我建议如果有可能,并且不是一个坏主意,那么你就是这个类的子类。
如果它是一个UIView,我会像这样继承它:
@class JVView : UIView <NSCopying>
然后我会适当地实现copyWithZone:
方法,复制您认为必要的实例的任何属性。