如果我这样做:

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对象。正确吗?

最佳答案

是的,因为在您分配它之前,您应该在此行之前释放它

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


还要注意,最好在同一行上进行分配和初始化,不要将它们分成多行

所以这

NSDate *dateStart;
[dateStart alloc];


将更改为

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

08-27 18:57