我試圖立即停止我的NSTimer(不重複),但我不能。 我的NSTimer做下面的代碼:立即停止NSTimer
-(void)timerAction:(NSTimer*)timer{
dispatch_queue_t serverDelaySimulationThread = dispatch_queue_create("com.xxx.serverDelay", nil);
dispatch_async(serverDelaySimulationThread, ^{
[NSThread sleepForTimeInterval:2.0];
dispatch_async(dispatch_get_main_queue(), ^{
//CALL WEBSERVICE RESPONSE IN HERE
});
});
}
每次文本框的確發生了變化,我會作廢的NSTimer並重新創建的NSTimer!如果用戶輸入的字符數大於2s的2倍之間的延遲時間,我想要執行一個請求到WEBSERVICES。我的代碼如下
-(void) textFieldDidChange:(id)sender{
[MyTimer invalidate];
MyTimer = nil;
MyTimer = [NSTimer scheduledTimerWithTimeInterval:0 target:self selector:@selector(timerAction:) userInfo:nil repeats:NO];
}
但是,當我在此之後快速鍵入「ABCD」 - > 2s後,4個webservices被調用。 如何停止NSTimer,但它未完成
Tks提前!
在我的NSTimer中,有添加睡眠時間並將其設置爲2秒。如果我應用您的解決方案,它只會將我的睡眠時間增加到4秒。 :) tks –
對不起,我忘了說,當你設置你的計時器timeInterval 2.0秒,你不需要[NSThread sleepForTimeInterval:2.0]; 問題是,當你把你的線程進入睡眠狀態時,你不能取消它,它會在2.0秒後繼續執行。 所以只要刪除NSThread睡眠和設置計時器爲2.0秒,它將工作:) –
哦!如果這個定時器沒有取消,我只想在2秒鐘內等待2s - >打一個WEBSERVICE。 –