我在关于copyWithZone的苹果文档中读到:“返回的对象由发送者隐式保留,发送者负责释放它”。 但是......我怎么能释放一些我回来的东西......我疯了!
代码示例:
- (id)copyWithZone:(NSZone *)zone {
MyObject* obj = [[[self class] allocWithZone:zone] init]; // explicit retain
[obj fillTheObj];
return obj; // implicit retain
}
告诉发布应该在哪里? 我保留两次?唔...
答案 0 :(得分:1)
发件人负责发布。这意味着无论谁调用你的复制方法都需要所有权,即:
MyObject *obj = ...
MyObject *aCopy = [obj copy];
... do stuff with aCopy
[aCopy release];