2010-11-01 2 views
1

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

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

abc = [[NSObject alloc] init]; 

} 

Действительно ли мой поток? Спасибо.

ответ

6

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

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

потому

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

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

Вы могли бы также рассмотреть вопрос об объявлении abc как Objective-C собственность с retain семантики, в этом случае все, что вы сделали бы это:

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

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

Смежные вопросы