Iphone выделить память в initWithNibName - PullRequest
1 голос
/ 12 января 2011

Правильно ли выделить память для массива, который установлен как свойство в методе initWithNibName, если я больше не хочу выделять память для него (даже если представление всплывающее, а затем снова выдвигается)?*

Спасибо

Ответы [ 2 ]

2 голосов
/ 12 января 2011

Это правильно, только убедитесь, что выпустили его в свой dealloc . убедитесь, что при выделении инициализации вы НЕ используете сеттер, вместо этого вы должны непосредственно выделить переменную экземпляра init:

_myArray = [[NSArray alloc]init];

если вы хотите пройти только через метод свойства, сделайте что-то вроде этого:

self.myArray = [NSArray array];

и еще раз, не забудьте выпустить его в свой dealloc:

 -(void)dealloc
{
    [_myArray release];
    [super dealloc];
}
2 голосов
/ 12 января 2011

Что ж, если представление показано, а затем скрыто, оно получит как initWithNibName, так и release; так что вы должны сделать что-то вроде этого:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
   yourArray = [[NSArray alloc] init];
}

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

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

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