2010-11-08 74 views
12

我注意到在實現dealloc時,在書籍和網頁上查看各種代碼時有點困惑。我的問題是當使用@property我應該使用以下哪一個。直到現在我一直在使用VERSION_001。dealloc,使用release還是設置爲nil屬性?

@property(nonatomic, retain) NSString *name; 
@property(nonatomic, retain) NSString *type; 
@property(nonatomic, retain) NSString *payload; 
@property(nonatomic, retain) NSString *orbit; 

VERSION 001

- (void)dealloc { 
    [name release]; 
    [type release]; 
    [payload release]; 
    [orbit release]; 
    [super dealloc]; 
} 

VERSION 002

- (void)dealloc { 
    [self setName:nil]; 
    [self setType:nil]; 
    [self setPayload:nil]; 
    [self setOrbit:nil]; 
    [super dealloc]; 
} 

回答

17

有沒有真正的區別,除非你不使用@synthesize關鍵字。當你將這些屬性設置爲零時,它們會被setter在幕後發佈。現在,與第一版相比,性能可能會有所提高,因爲在後臺不需要發生太多的事情(例如指針比較以及蘋果隱藏在幕後的所有其他事情)。我總是使用版本001,因爲它更重要,未來的開發人員不需要挖掘我的代碼就可以找出我正在完成的任務。

+0

謝謝,正是我之後,非常感謝。 – fuzzygoat 2010-11-08 13:16:13

+1

沒問題,任何時候,只要不要忘記接受答案:) – 2010-11-08 13:16:43

+3

版本1與版本2相比的一大優點是,如果有一天您修改其中一個屬性的setter以執行一些不重要的工作,您不會在版本1中產生性能或潛在的不正確行爲。版本2很容易導致您在代碼中引入錯誤,而無法在一天之內實現。 – Ryan 2010-11-08 19:28:10

相關問題