iOS - назначение ivars через свойства - PullRequest
0 голосов
/ 22 июля 2011

Учитывая эту переменную экземпляра:

UILabel *label;

и нижеследующее свойство:

@property (nonatomic,retain) UILabel *label;

И следующий синтез:

@synthesize label;

Правильны ли следующие назначения (относительно правильного управления памятью):

// 1
UILabel *tmpLabel = [[UILabel alloc] initWithFrame:CGSizeZero];
self.label = tmpLabel;
[tmpLabel release];

// 2
self.label = [[[UILabel alloc] initWithFrame:CGSizeZero] autorelease];

// 3 - This one looks shady but I haven't gotten any leaks ( I suppose this will
// not use the created setter)
label = [[UILabel alloc] initWithFrame:CGSizeZero];

- (void)viewDidUnload {
    self.label = nil;
    [super viewDidUnload];
}

- (void)dealloc {
    [label release];
    [super dealloc];
}

1 Ответ

0 голосов
/ 22 июля 2011

Все правильно.Единственное, на что следует обратить внимание, это то, что если вы выпустите метку в -viewDidUnload, вам придется воссоздать ее в viewWillLoad.Вы также правы, что номер три не пройдет через сеттер.

...