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 を停止するにはどうすればよいですか
よろしくお願いします!