希望有人可以帮忙解决这个问题。尝试使用-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]
时,会出现错误的访问错误。从我读过的关于这个主题的其他帖子来看,答案通常似乎与保留日期有关。所以,我不确定我错过了什么。任何帮助将非常感激!
答案 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
它。)