2011-02-10 79 views
2

我有一個啓動按鈕,以.h文件中聲明的計時器開始。然後,我有一個停止按鈕,它不會執行[theTimer invalidate];,然後當我用啓動按鈕再次啓動計時器時,由於被無效而導致錯誤。啓動按鈕啓動NSTimer,停止按鈕停止它,啓動按鈕再次啓動它。但'無效'給我一個錯誤?

任何想法如何解決這個問題?

+0

後您正在使用的代碼示例。 – WrightsCS 2011-02-10 04:12:46

+0

@Nikita Rybak有正確的答案。你可能會得到一個更詳細的答案,@安德魯,如果你發佈你的code_。 – aqua 2011-02-10 04:18:33

回答

5

API documentation在這一點上是非常具體的:
一旦失效,定時器對象不能重用。

所以,只需創建一個新的計時器。如果你只在用戶按下按鈕時才這樣做,它不會殺死你的表現。

2

NSTimer類的使用有些尷尬;而不是將創建/銷燬與開始/停止分開,而是全部彙集在一起​​。換句話說,計時器一旦創建就立即啓動,一旦它被銷燬就停下來。

因此,您需要使用NSTimer對象的存在作爲標誌來指示它是否正在運行;是這樣的:

//私有方法

@interface MyClass的(){ 的NSTimer * _timer; } - (void)_timerFired; @end

@implementation MyClass的

  • (IBAction爲)startTimer所:(ID)發送方 { 如果(_timer ==無) { _timer = [的NSTimer scheduledTimerWithTimeInterval:1.0F 目標: self selector:@selector(_timerFired) userInfo:nil repeats:YES] retain]; } }

  • (IBAction爲)stopTimer:(ID)發送方 { 如果(!_timer =無) { [_timer無效]; _timer = nil; } }

  • (無效)_timerFired { 的NSLog(@ 「平」); }

相關問題