我尝试创建一种赋予协议 NSCopying 的复制方法。
我有以下课程:
@interface Gene : NSObject <NSCopying>
{
int firstAllele;
int secondAllele;
}
使用方法:
-(id) copyWithZone:(NSZone*) zone
{
id clonedGene = [[[self class] allocWithZone:zone] initWithAllele1:first andAllele2:second];
return clonedGene;
}
如果我通过以下方式调用该方法:
Gene* gene1 = [[Gene alloc]initWithAllele1:4 andAllele2:2];
Gene* gene2 = [gene1 copy];
它在调用gene1的复制方法时崩溃。
我必须以不同的方式调用该方法吗?
喜欢[gene1 copyWithZone:(NSZone *)]
,但我必须通过什么对象?我必须创建一个 NSZone 对象吗?还是有一个我可以作为参数传递的默认值?
感谢您的任何帮助