Нужно ли добавлять метод dealloc в класс Objective-C? - PullRequest
4 голосов
/ 11 сентября 2011

Если создан подкласс UIviewController, для вас автоматически создается метод dealloc.

- (void)dealloc{}

Однако, когда я создаю класс Objective C, метод не создается автоматически.Нужно ли добавлять метод dealloc, чтобы я мог освободить свойства в классе?Особенно, если я сохранил их в заголовочном файле?

Например, в моем заголовочном файле класса Objective C у меня есть

@interface ClassA : NSObject 
{
    NSString *someProperty;
    UINavigationController *navcon;
}

@property (nonatomic, retain) NSString *someProperty;
@property (nonatomic, retain) UINavigationController *navcon;

Нужно ли вручную создавать метод dealloc для освобождениясвойства как ниже?

-(void)dealloc
{
    [someProperty release];
    [navcon release];
}

Ответы [ 2 ]

6 голосов
/ 11 сентября 2011

Да, вы должны.

dealloc вызывается для вашего объекта до того, как он будет уничтожен навсегда и его память будет возвращена ОС.Если он распространяется на другие объекты, например, в вашем случае, важно, чтобы эти объекты тоже были освобождены.

Вот почему вам необходимо переопределить dealloc и освободить любой ресурс, который вы там удерживаете.

Тот факт, что какой-то шаблон XCode может или не может предоставить вам пример реализации dealloc, не имеет значения.

1 голос
/ 11 сентября 2011

Вы отвечаете за освобождение всех объектов верхнего уровня в файле пера контроллера представления. -dealloc это обычное место для этого.

...