2012-06-29 45 views
0

如果我這樣做:複製的NSDate對象,並釋放

NSDate *dateStart; 
[dateStart alloc]; 

// Initialise with a date somewhere here.. 

.. 

// Modify the start date. 
dateStart = [chosenDate copy]; 

我應該做的分配dateStart指針之前[dateStart發佈]?我來自C/C++的背景,我不明白整個ObjectiveC/iOS垃圾收集行爲(如果確實有)。我的C背景告訴我,我應該釋放dateStart指向的最初NSDate對象。這是正確的嗎?

+2

我不知道我是否完全理解了你的問題,但如果你使用ARC,你不需要釋放對象,它本身就是它! – sridvijay

回答

2

是因爲你分配它之前,你應該這行

//Release it before reassign 
[dateStart release]; 
dateStart = [chosenDate copy]; 

還要注意之前釋放其首選的還是做在同一行的分配和初始化,不要他們突破多條線路

所以這

NSDate *dateStart; 
[dateStart alloc]; 

將變爲

NSDate *dateStart = [[dateStart alloc] init....];