开发者

iPhone : copyWithZone : releasing an object before its return?

I read in the apple documentation about copyWithZone : "The returned object is implicitly retained by the sender, who is responsible for releasing it". But... How may I release something I return... I'm going crazy !

Sample of code :

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

        return obj; // implicit retain
    }

Where should be the told release ? I retain twice ? Uhhh...


The sender is responsible for releasing. That means whoever calls your copy method takes ownership, i.e.:

MyObject *obj = ...
MyObject *aCopy = [obj copy];
... do stuff with aCopy
[aCopy release];
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜