Задержка вызова, с возможностью отмены? - PullRequest
5 голосов
/ 03 декабря 2008

Как вызвать задержку, скажем, я хочу вызвать метод (один раз) через 3 секунды и как отменить этот вызов, если мне нужно?

Ответы [ 3 ]

7 голосов
/ 03 декабря 2008

Вы также можете использовать -[NSObject performSelector:awithObject:afterDelay:] и +[NSObject cancelPreviousPerformRequestsWithTarget:selector:object].

3 голосов
/ 03 декабря 2008

Использовать NSTimer . Используйте это, чтобы установить вызов на метод через три секунды. Он будет вызван только один раз:

   [NSTimer scheduledTimerWithTimeInterval: 3
                                    target: self
                                  selector: @selector(method:)
                                  userInfo: nil
                                   repeats: NO];

метод должен выглядеть следующим образом:

- (void) method: (NSTimer*) theTimer;

Вы можете передать параметры в метод, используя userInfo (в приведенном выше примере установите nil ) Доступ к этому методу можно получить как [theTimer userInfo] .

Используйте недействительный метод в NSTimer, чтобы отменить его.

1 голос
/ 03 декабря 2008

в вашем заголовке ..

NSTimer *timer;

когда вы хотите настроить ..

timer = [NSTimer scheduledTimerWithTimeInterval:3.0 target:self selector:@selector(yourMethod:) userInfo:nil repeats:NO];

когда вы хотите отменить ..

[timer invalidate];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...