取消目前的NSTimer我這樣做是:在NSRunLoop
timer = [NSTimer timerWithTimeInterval:timeUntilAction target:self selector:@selector(actionToPerform) userInfo:nil repeats:NO];
NSRunLoop *runLoop = [NSRunLoop currentRunLoop];
[runLoop addTimer:timer forMode:NSRunLoopCommonModes];
但是我想能夠無效此計時器。調用無效似乎沒有做任何事情,我不知道還有什麼要嘗試,因爲我不能從任何實例方法中刪除NSRunLoop
中的定時器,我可以看到的是NSTimer
或NSRunLoop
。
我應該如何設置一個方法(actionToPerform)在經過一定的延遲(timeUntilAction)之後才能觸發,但仍然有能力在給定用戶交互的情況下取消操作。用戶還應該能夠在初始計時器(被取消的計時器)計劃關閉之前重新啓動計時器。
任何建議將是偉大的!
感謝
只是踢,添加到'NSDefaultRunLoopMode'而不是'NSRunLoopCommonModes'。第二個可能會導致我的經驗意想不到的行爲(雖然,檢查文檔,我明白爲什麼現在)。 'invalidate'肯定會將它從運行循環中刪除,如果它不是,那麼你做錯了什麼。 – borrrden 2012-08-13 01:11:18
@borrrden哦,天啊。你是對的。我搞砸了一個if語句。現在每個人都可能因爲沒有完全測試我的代碼而使我失望!我確信我沒有搞砸,但是我把它放在一塊太遠了。我只需要一些咖啡。謝謝! – RileyE 2012-08-13 02:22:31
有人可以關閉這個問題嗎?或刪除它? – RileyE 2012-08-13 02:22:49