2010-07-19 11 views
7

如果我成立了一個這樣的runloop:如何停止一個定時器觸發runloop?

NSRunloop* loop = [NSRunloop currentRunLoop]; 
[runLoop addTimer:anyTimer forMode:NSDefaultRunLoopMode]; 

我可以再次停止呢? 或者是忽略我用來觸發進一步操作的通知的唯一方法?

好,我舉一個例子對這個問題:

-(void)blinkeffekt:(double)pollingTime{ 

NSRunLoop* runLoop = [NSRunLoop currentRunLoop]; 

if (pollingTime != 0) { 
    NSTimeInterval interval =(double)pollingTime/1000; 
    NSTimer timer = [NSTimer scheduledTimerWithTimeInterval:interval target:self selector:@selector(polling) userInfo:nil repeats:YES]; 
    [runLoop addTimer:timer forMode:NSDefaultRunLoopMode]; 
} 
else { 

    [timer invalidate]; 
} 

}

當然,這裏有幾個錯誤 - 沒有任何問題。但我認爲,這顯示了我的問題。直到現在,這個答案並不能真正解決。

我需要運行一個計時器並在稍後停止。理想的是脫離課堂上的另一個功能。 但後來我不能訪問「計時器」了,runloop不允許弄清楚,如果這樣的「消息」可用。 ,如果我爲每個函數的每個調用註冊一個新的定時器,它將是非常無效的。

回答

19

您需要向計時器發送無效消息,以將其從RunLoop中刪除。

See Doc

[anyTimer invalidate]; 
之前
+0

那裏,我不得不計時器綁定到對象,即我不鬆散的參考。但是,是的,所以它的工作 – nico 2010-08-09 11:21:22

相關問題