2009-10-28 132 views
28

我有這樣的事情:如何查找NSTimer是否激活?

NSTimer* timer = [NSTimer scheduledTimerWithTimeInterval:1.0 
                target:self 
               selector:@selector(updateCountdown) 
               userInfo:nil 
                repeats:YES]; 

我更新使用此計時器標籤的文本。不是在某種情況下,我想檢查定時器是否有效,然後使定時器無效。我的問題是我如何找到定時器是否有效?

回答

67

當一個非重複計時器觸發時,它會將自己標記爲無效,因此您可以在取消它之前檢查它是否仍然有效(當然,然後消除它自己)。

if ([timer isValid] && yourOtherCondition){ 
    [timer invalidate], timer=nil; 
} 

你的情況,你有一個重複的計時器所以它永遠是有效的,直到你採取一些行動以使它無效。看起來像在這種情況下,你正在運行一個倒計時,所以它將取決於你來確保你失效並擺脫它當倒計數達到所需的值(在你的updateCountdown方法)

+0

很棒的例子!謝謝 – Genevios 2016-10-23 13:32:40

5

將計時器保留在實例變量中,並且在沒有計時器正在運行時(即在撥打[timer invalidate]後)設置timer = nil。然後,要檢查定時器是否處於活動狀態,您可以檢查是否timer == nil

1

在Swift中,你可以使用在isValid布爾,看看是否計時器正在運行:

if timer.isValid { 
    // Do stuff 
} 

Apple docs

一個布爾值,指示接收者是否是當前 有效。 (只讀)

如果接收方仍然能夠觸發或者如果定時器已經失效並且不再能夠觸發,則爲true。

相關問題