Обязательно ли проверять объект nil перед тем, как его выделить? - PullRequest
1 голос
/ 01 ноября 2010

цель c вопросом, у меня есть указатель NSObject * abc;Я не выделил и не инициировал его в методе init.Итак, мне нужно сделать это в методе?

-(void)someThingElse{
 if(abc != nil){
    [abc release];
    abc = nil;
 }

 abc = [[NSObject alloc] init];

}

Правильно ли мой поток?благодарю вас.

1 Ответ

6 голосов
/ 01 ноября 2010

Ваш код может быть упрощен до:

[abc release];
abc = [[NSObject alloc] init];

, потому что

  • отправка сообщения -release на nil ничего не делает, поэтому нет необходимости проверятьдля nil

  • нет необходимости устанавливать abc на nil, если вы собираетесь назначить ему

Youможно также рассмотреть объявление abc как свойство target-c с семантикой retain, и в этом случае все, что вам нужно сделать, это:

self.abc = [[[NSObject alloc] init] autorelease];

В любом случае ваш метод dealloc должен также включать[abc release], конечно

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