Я понимаю, что при использовании Alloc, new или copy вы являетесь владельцем объекта и должны его освободить. Я понимаю, что если я сохраняю объект, мне нужно его освободить.
Но если у меня есть следующий оператор в конце метода:
return [[UIImage alloc] initWithContentsOfFile:path];
Я владею объектом UIImage
, потому что я выделил место в памяти, но у меня больше нет ссылки на него, потому что он был возвращен вызывающей стороне. В моем методе dealloc()
я не могу его освободить, так как у меня нет ссылки.
Итак, мой вопрос: правильно ли это:
return [[[UIImage alloc] initWithContentsOfFile:path] autorelease];
Я полагаю, что в этом случае вызывающая сторона может сохранить возвращенный объект, если он хочет взять на себя ответственность, и в конечном итоге ему потребуется освободить себя.
Спасибо за вашу помощь.