2010-07-08 4 views
3

В Objective-C, если у меня есть метод, в котором я выделяю и инициализирую объект, затем возвращаю его, где/как его отпустить?Управление памятью при возврате объекта Objective-C

, например, скажем, у меня есть метод, где я создаю объект:

- (void)aMethod { 
    UIView *aView = [self createObject]; 
} 

- (UIView *)createObject { 
    UIView *returnView = [[UIView alloc] initWithFrame:CGRectZero]; 
    return returnView; 
} 

Когда я выпускаю этот объект? Или я просто авторекламу?

+0

возможно дубликат [памяти объективном управления с - возвращать объекты из методов] (http://stackoverflow.com/questions/2742397/memory-management-objective-c-returning-objects-from-methods) – kiamlaluno

ответ

2
- (void)aMethod { 
    UIView *aView = [self createObject]; 
} 

- (UIView *)createObject { 
    UIView *returnView = [[UIView alloc] initWithFrame:CGRectZero]; 
    [returnView autorelease]; 
    return returnView; 
} 
8

rules for memory management ясно по этому вопросу. Вы должны прочитать их. Очень простой и основополагающий для написания кода Objective-C с использованием фреймворков Apple.

-6

Помните также, что сборка мусора отсутствует на iPhone, поэтому вы не можете автообновлять, если вы разрабатываете для этой среды.

Что касается того, когда вы должны освободить объект, простой ответ заключается в том, когда вы закончите использовать его и перед тем, как уничтожить приложение.

+0

Итак, применительно к моему примеру выше, я бы выпустил объект после того, как я закончил его в методе 'aMethod'? – Calvin

+1

@jer Я почти уверен, что сбор мусора не содержится ни в одном iOS – cobbal

+0

@cobbal, http://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/CoreDataUtilityTutorial/Articles/02_creatingProj.html – jer

Смежные вопросы