2012-06-18 85 views
0

在我的代碼中使用暫停定時器和恢復定時器來暫停和恢復定時器。遇到錯誤 'NSInvalidArgumentException', reason: '-[__NSCFNumber timeIntervalSinceNow]: unrecognized selector sent to instance 0x164590'timeIntervalSinceNow用於暫停和恢復定時器的錯誤

代碼暫停定時器和重啓定時器

-(void)pauseTimer{ 
pauseStart = [[NSDate dateWithTimeIntervalSinceNow:0] retain]; 
previousFireDate = [[timer fireDate] retain]; 
[timer setFireDate:[NSDate distantFuture]]; 
} 
-(void)resumeTimer{ 
float pauseTime = -1*[pauseStart timeIntervalSinceNow]; 
[timer setFireDate:[previousFireDate initWithTimeInterval:pauseTime sinceDate:previousFireDate]]; 
[pauseStart release]; 
[previousFireDate release]; 
} 

利用暫停和播放暫停切換按鈕重啓定時器

-(void)playpauseAction:(id)sender { 
if([audioPlayer isPlaying]) 
{ 
    [sender setImage:[UIImage imageNamed:@"Play Icon.png"] forState:UIControlStateSelected]; 
    [audioPlayer pause]; 
    [self pauseTimer]; 
} 
else 
{ 
    [sender setImage:[UIImage imageNamed:@"pause.png"] forState:UIControlStateNormal]; 
    [audioPlayer play]; 
    [self resumeTimer]; 
    if(isFirstTime == YES) 
    { 
     self.timer = [NSTimer scheduledTimerWithTimeInterval:11.0 
              target:self 
              selector:@selector(displayviewsAction:) 
              userInfo:nil 
              repeats:NO]; 
     isFirstTime = NO; 
    }  
} 
} 

任何想法,爲什麼應用程序終止,如何解決這一問題。

謝謝。

回答

1

resumeTimer被調用兩次pauseStartpreviousFireDate得到過度發佈並且應用程序可能崩潰!

+0

你能幫我解決這個問題嗎?因爲我得到了暫停計時器的內存泄漏並釋放了計時器,如果我使用它多次。這是什麼修復。 – user1452248

+0

我會創建一個新的計時器實例並使舊的無效 – Felix