0

copyWithZoneに関するアップルのドキュメントを読みました:「返されたオブジェクトは、それを解放する責任がある送信者によって暗黙的に保持されます」。しかし...私が返すものをどのようにリリースできますか...私は夢中になります!

コードのサンプル:

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

        return obj; // implicit retain
    }

伝えられるリリースはどこにあるべきですか?私は2回保持しますか?うーん...

4

1 に答える 1

1

送信者はリリースする責任があります。つまり、copyメソッドを呼び出す人は誰でも所有権を取得します。つまり、次のようになります。

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