iPhone: copyWithZone: освободить объект перед его возвращением? - PullRequest
0 голосов
/ 08 января 2011

Я прочитал в яблочной документации о copyWithZone: «Возвращенный объект неявно сохраняется у отправителя, который отвечает за его освобождение».Но ... Как я могу выпустить что-то, что я возвращаю ... Я схожу с ума!

Пример кода:

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

        return obj; // implicit retain
    }

Где должен быть упомянутый релиз?Я удерживаю дважды?Уххх ...

1 Ответ

1 голос
/ 08 января 2011

Отправитель отвечает за освобождение.Это означает, что тот, кто вызывает ваш метод копирования, становится владельцем, то есть:

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