управление памятью iphone: выделять и сохранять свойства - PullRequest
0 голосов
/ 28 декабря 2010

Согласно документам, вы делаете один релиз на выделение или сохранение (и т. Д.) Однако что делать при использовании retain Propertys?

например:

HEADER
@property(retain)UIView *someView;

IMPLEMENTATION
/*in some method*/
UIView *tempView = [[UIView alloc] init]; //<<<<<ALLOC - retain count = +1
[tempView setBackgroundColor:[UIColor redColor]];
self.someView = tempView; ///<<<<<RETAIN - retain count = +2
[tempView release];   ///should I do this?

или другая версия ОСУЩЕСТВЛЕНИЯ

self.someView = [[UIView alloc] init]; //<<<<<ALLOC & RETAIN - retain count = +2
//now what??? [self.someView release]; ????

РЕДАКТИРОВАТЬ: Я не дал понять, но я имел в виду, что делать в обоих обстоятельствах, а не только в первом.

Ответы [ 3 ]

3 голосов
/ 28 декабря 2010
/*in some method*/
UIView *tempView = [[UIView alloc] init]; //<<<<<ALLOC - retain count = +1
[tempView setBackgroundColor:[UIColor redColor]];
self.someView = tempView; ///<<<<<RETAIN - retain count = +2
[tempView release];   ///should I do this? // YES!!!!

И также вы должны освободить все сохраняемые свойства в вашем методе dealloc перед [super dealloc].

0 голосов
/ 28 декабря 2010

Для второго образца вы можете использовать autorelease:

self.someView = [[[UIView alloc] init] autorelease];
0 голосов
/ 28 декабря 2010

Ваша первая версия верна.Существует только одна постоянная ссылка на представление, поэтому целесообразно сохранить счетчик в 1.

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