Ios EXC\u错误\u访问错误-TimeIntervalenceNow
希望有人能帮上忙。在尝试使用Ios EXC\u错误\u访问错误-TimeIntervalenceNow,ios,nsdate,Ios,Nsdate,希望有人能帮上忙。在尝试使用-timeIntervalSinceNow方法时,我不断遇到错误的访问错误。我在这个类中有一个名为NSDate*startDate的变量,我添加了@property(非原子,retain)NSDate*startDate startDate用于此处的代码: startDate = [NSDate date]; updateTimer = [NSTimer scheduledTimerWithTimeInterval:0.1
-timeIntervalSinceNow
方法时,我不断遇到错误的访问错误。我在这个类中有一个名为NSDate*startDate
的变量,我添加了@property(非原子,retain)NSDate*startDate代码>
startDate
用于此处的代码:
startDate = [NSDate date];
updateTimer = [NSTimer scheduledTimerWithTimeInterval:0.1
target:self
selector:@selector(updatePlaybackPosition:)
userInfo:nil
repeats:YES];
}
}
当程序到达[startDate TimeIntervalncesInnow]
时,会出现错误的访问错误。从我读过的关于这个话题的其他帖子中,答案似乎与保留日期有关。所以,我不确定我错过了什么。任何帮助都将不胜感激 [NSDate date]
返回自动删除的NSDate
。如果您想在返回给您的方法之外使用该值,您必须保留它(并且处理完后释放它)。您的NSDate
在计时器启动之前自动释放更新:确保使用声明的属性而不是实例变量,方法是使用self.
。这将为您妥善处理保留问题
self.startDate = [NSDate date];
然后
- (void)updatePlaybackPosition:(NSTimer *)timer {
NSTimeInterval interval = [self.startDate timeIntervalSinceNow];
事实上,我最终找到了答案。似乎用它更好
-timeIntervalSinceDate:[NSDate date]
而不是从现在开始使用时间间隔。它基本上做了相同的事情,但出于某种原因-TimeIntervalencesNow每次都会出现错误的访问,但是上面的方法工作得很好。谢谢,我将其更改为[[NSDate date]retain],这样可以阻止程序在计时器中重复前几次[startDate TimeIntervalencesInnow]时出现错误的访问,经过几次循环后,它仍然提供了一个不好的访问。此外,它返回的时间间隔为空。还有什么建议吗?我错过了你的财产申报单。您访问的不是属性,而是实例变量。我会更新我的答案。哦,谢谢,这很有意义。我已经做了改变,不过还是一样。。在更新计时器中循环一次,然后在那一行进行错误访问。非常感谢您的想法,关于它的任何进一步想法,请在startDate上查看您的代码,除了dealloc之外,还有其他我能想到的事情。
-timeIntervalSinceDate:[NSDate date]