我使用以下代碼開始的重複的NSTimer 4秒延遲後:停止一個「performSelector afterDelay」之前它觸發
- (void)viewDidLoad {
[self performSelector:@selector(startTimer) withObject:self afterDelay:4];
}
- (void)startTimer {
NSTimer *mytimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(doSomething) userInfo:nil repeats:YES];
}
- (void)doSomething {
NSLog(@"What up!");
}
問題是我可能需要從被調用的4秒之前是取消startTimer所向上。有沒有辦法做到這一點?我實際上更喜歡不首先使用performSelector(看起來很亂)。如果僅具有的NSTimer沿着此線的東西...
的NSTimer * mytimer = [的NSTimer scheduledTimerWithTimeInterval:1.0 afterDelay:4.0目標:自 選擇器:@selector(doSomething的) USERINFO:無重複:YES] ;
...那將是完美的,因爲我可以調用如下
[myTimer無效]。
任何幫助或尖端非常感謝=)
P.S.我在NSObject類的引用中發現了一個名爲cancelPreviousPerformRequestsWithTarget的東西。似乎並不是我可以從該代碼運行的位置調用的方法。如果這是回到正確的軌道,歡迎您的反饋!
可能重複[停止一個performSelector:從正在執行(http://stackoverflow.com/questions/5498071/stopping-a-執行選擇器從正在執行) – Vladimir 2011-04-06 08:17:00
你可以使用非重複計時器來觸發重複計時器 – 2011-04-06 08:28:00
不錯,尼克,一個更清潔的選項。謝謝!可惜我不能將你的評論標記爲答案。我將不得不標記下一個最接近的 – Timbo 2011-04-06 10:12:45