2010-11-01 78 views
1

客觀c問題,我有一個指針NSObject * abc; 我還沒有分配,並在init方法中初始化它。 那麼,我需要在該方法中執行此操作嗎?這是否需要在alloc之前檢查對象nil?

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

abc = [[NSObject alloc] init]; 

} 

我的流程是否正確?謝謝。

回答

6

您的代碼可以簡化爲:

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

因爲

  • 發送-release消息nil什麼也不做,所以沒必要檢查nil

  • 沒有必要如果您剛分配給它,請設置abcnil

你也可以考慮宣佈abc作爲一個Objective-C性能與retain語義,在這種情況下,你會做的是:

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

在這兩種情況下,你的dealloc方法也應該包括[abc release],當然是

相關問題