调用dateByAddingTimeInterval:function时NSDate对象崩溃。为什么?

时间:2011-08-12 05:34:11

标签: iphone objective-c nsdate

我在.h部分声明了一个NSDate对象。在.m中,在viedDidLoad中,我使用了以下几行,它工作正常

shownDate = [NSDate date];
shownDate = [shownDate dateByAddingTimeInterval:86400.0];

然后当我点击一个按钮时,我在一个函数

中调用相同的函数
    shownDate = [shownDate dateByAddingTimeInterval:86400.0];

但是这里正在崩溃。这些是程序中我使用此功能的唯一3行。有人能告诉我为什么会这样吗?

3 个答案:

答案 0 :(得分:4)

取决于你如何称呼它。我没有更多代码的最佳猜测是显示日期是自动释放的。尝试保留它,然后在不再需要它时释放它。

答案 1 :(得分:0)

您需要保留自动释放的shownDate变量。

而不是

shownDate = [NSDate date];

使用

shownDate = [[NSDate alloc] init];

答案 2 :(得分:0)

shownDate = [NSDate date];
shownDate = [shownDate dateByAddingTimeInterval:86400.0];
[shownDate retain];

从按钮点击时点击:

NSDate newDate = [shownDate dateByAddingTimeInterval:86400.0];
[shownDate release];
shownDate = newDate;
[shownDate retain];

或者make shownDate为retain属性并将其称为self.shownDate,并且将自动处理retain / release。