我有以下在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'並在處理程序中再次設置 –