-timeIntervalSinceNow的EXC_BAD_ACCESS错误

时间:2011-08-10 20:28:35

标签: ios nsdate

希望有人可以帮忙解决这个问题。尝试使用-timeIntervalSinceNow方法时,我一直收到错误的访问错误。我在这个名为NSDate *startDate的类中有一个变量,我添加了@property (nonatomic, retain) NSDate *startDate;

startDate在此处的代码中使用:

    startDate = [NSDate date];
    updateTimer = [NSTimer scheduledTimerWithTimeInterval:0.1 
                                                   target:self
                                                 selector:@selector(updatePlaybackPosition:)
                                                 userInfo:nil
                                                  repeats:YES];
}

}

- (void)updatePlaybackPosition:(NSTimer *)timer {
   NSTimeInterval interval = [startDate timeIntervalSinceNow];

当程序到达[startDate timeIntervalSinceNow]时,会出现错误的访问错误。从我读过的关于这个主题的其他帖子来看,答案通常似乎与保留日期有关。所以,我不确定我错过了什么。任何帮助将非常感激!

3 个答案:

答案 0 :(得分:5)

您的NSDate在定时器触发前自动释放。 已更新:确保使用self.使用您声明的属性而不是实例变量。这将妥善处理你的保留。

self.startDate = [NSDate date];

然后

- (void)updatePlaybackPosition:(NSTimer *)timer {
   NSTimeInterval interval = [self.startDate timeIntervalSinceNow];

答案 1 :(得分:1)

我实际上最终想出了答案。使用

似乎更好
-timeIntervalSinceDate:[NSDate date]

而不是使用-timeIntervalSinceNow。它基本上做同样的事情,但由于某种原因--timeIntervalSinceNow每次都会给出一个错误的访问错误,但上面的方法工作正常。

答案 2 :(得分:0)

[NSDate date]会向您返回自动释放的NSDate。如果您想在返回给您的方法之外使用该值,则必须retain它(当您完成它时release它。)