我试图立即停止我的 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
});
});
}
每次 textField 发生变化时,我都会使 NSTimer 无效并重新创建 NSTimer!如果 2 次用户键入字符之间的延迟时间大于 2 秒,我只想执行对 WEBSERVICES 的请求。我的代码如下
-(void) textFieldDidChange:(id)sender{
[MyTimer invalidate];
MyTimer = nil;
MyTimer = [NSTimer scheduledTimerWithTimeInterval:0 target:self selector:@selector(timerAction:) userInfo:nil repeats:NO];
}
但是,当我快速键入“ABCD”-> 2 秒后,调用了 4 个 Web 服务。我如何在 NSTimer 未完成时停止它
谢谢提前!