以下是代码:
- (id)copyWithZone:(NSZone*)zone {
ExecutedOrderInfo* copy = [[self class] allocWithZone:zone];
copy.executedPrice = self.executedPrice;
copy.executedQuantity = self.executedQuantity;
return (id)copy;
}
问题是,是否有必要在上面的代码中发布“复制”?或者在有人打电话时发布它?
答案 0 :(得分:3)
不,不是这种方法。以copy
开头的方法必须返回具有保留计数1的非自动发布的对象。就像您一样。
PS:不需要return (id)copy
中的演员表。 id
是抽象对象类型,比您的具体类更通用。只有在具有应该被视为不同类的具体类时才需要强制转换 - 就像在进行子类检查之后的子类一样。
PPS:您的方法缺少init
。仅仅alloc
一个实例并不好。而是做这样的事情:[[[self class] allocWithZone:zone] init];
答案 1 :(得分:0)
Max是对的。 但所有的设计和打算都取决于你。 (即使通常copyXXX意味着返回非自动释放的对象)
为了防止内存泄漏,请在使用后使用静力分析和仪器。
答案 2 :(得分:-1)
如果我正确地读取您的代码 - 否。该方法不会创建对象,因此不需要释放它。