Как правильно выпустить @property / IBOulet для UIViewController? - PullRequest
0 голосов
/ 24 мая 2011

Я прочитал много разных вещей о правильном управлении памятью для какао / target-c

Например, я прочитал, что любой IBOutlets должен быть установлен в 'nil', но что-то вроде NSArray Dost?

Я также хотел бы знать, важно ли вызывать метод super до или после того, как я освобождаю / nil все

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

Вот что я сейчас делаю, но что-то явно не так, как я получаю очень расстраивающий EXEC_BAD_ACCESS!?! Как будто я выпускаю что-то дважды?

header.h

@interface MyViewController : UIViewController {

    UILabel *aLabel;
    NSArray *aArray;

}
@property (nonatomic, retain) IBOutlet UILabel *aLabel;
@property (nonatomic, retain) NSArray *aArray;

method.m

@implementation MyViewController

@synthesize aLabel, aArray;

- (void)dealloc
{
     [aLabel release], aLabel = nil;
     [aArray release];
     [super dealloc];
}

- (void)viewDidUnload
{
    self.aLabel = nil; //Not sure about this bad boy???
    [super viewDidUnload];
}

@end

1 Ответ

0 голосов
/ 24 мая 2011

В dealloc вы выпустили aLabel. Значит, его нет в памяти. Снова вы пишете эту строку --- aLabel = nil; Удалите эту строку. Так что он не может дать Exec_badaccess.нет указателя все еще вы пытаетесь получить доступ к указателю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...