崩溃在CopyWithZone:方法

时间:2014-04-15 06:27:36

标签: ios nscopying

我创建了一个类,它是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;
}

这里我需要深层复制。但是在分配线后它总是崩溃。请帮帮我。谢谢你。

1 个答案:

答案 0 :(得分:0)

并非所有NSObject子类都采用NSCopying协议。问题听起来就像是将此消息发送给无法识别它的对象。

GroupClass采用NSCopying并不重要,这不是问题。你在myObj上调用copyWithZone:无论是什么。

这行代码:

copy.myObj=[myObj copyWithZone: zone];

几乎可以肯定是导致坠机的原因。

修改

不知道myObj是什么,我建议如果有可能,并且不是一个坏主意,那么你就是这个类的子类。

如果它是一个UIView,我会像这样继承它:

@class JVView : UIView <NSCopying>

然后我会适当地实现copyWithZone:方法,复制您认为必要的实例的任何属性。