0

我在苹果文档中读到了 copyWithZone :“返回的对象由负责释放它的发件人隐式保留”。但是...我要如何释放我返回的东西...我要疯了!

代码示例:

    - (id)copyWithZone:(NSZone *)zone {
        MyObject* obj = [[[self class] allocWithZone:zone] init]; // explicit retain
        [obj fillTheObj];

        return obj; // implicit retain
    }

应该在哪里被告知发布?我保留两次?呃……

4

1 回答 1

1

发件人负责释放。这意味着任何调用您的复制方法的人都会获得所有权,即:

MyObject *obj = ...
MyObject *aCopy = [obj copy];
... do stuff with aCopy
[aCopy release];
于 2011-01-08T01:36:06.240 回答