我有以下在MessagePlayerViewController(UIViewController中)对功能,这移动的滑块,以反映一个AVAudioPlayer的播放进度:的NSTimer崩溃在ARC项目
-(void)startTrackingPlayback
{
if(!self.isPlaying)
{
self.isPlaying = YES;
self.playbackTimer = [NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(updateProgress) userInfo:nil repeats:YES];
}
}
-(void)stopTrackingPlayback
{
if(self.playbackTimer)
{
if(self.playbackTimer.isValid)
{
[self.playbackTimer invalidate];
self.playbackTimer = nil;
}
}
self.isPlaying = NO;
}
间歇地,和以下没有明显的图案,我得到一个Exec Bad Access
ith顶部两项中的堆栈为:
0 objc_msgSend
1 [MessagePlayerViewController stopTrackingPlayback];
这是怎么回事?在我致电isValid
之前,我检查计时器是否存在,并在我使其无效之前检查isValid
。
使用断点我可以看到定时器确实存在,但是当我将它设置为零时发生错误。如果我删除此行,我上线一个相同的错误:
[self.playbackTimer invalidate];
你在updateProgress中做了什么?你可以表演吗? – stosha
请添加您使用过的所有方法。 – Nirav
尝试使用'... repeats:NO'并在处理程序中再次设置 –