Я должен иметь возможность отложить 2 секунды, используя NSTimer. Как это сделать? - PullRequest
3 голосов
/ 14 сентября 2010

Я хочу произвести задержку в 2 секунды, используя NSTimer, как инициализировать таймер в программе?

Ответы [ 4 ]

12 голосов
/ 14 сентября 2010

Несколько вариантов здесь.

Если вы просто хотите задержку в 2 секунды, вы можете использовать функцию sleep ()

#include<unistd.h>
...
sleep(2);

Или вы можете использовать NSTimer следующим образом

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

И в вашем классе у вас есть метод, определенный как

-(void)fireMethod
{
//Do stuff 
}
4 голосов
/ 14 сентября 2010

Вот, пожалуйста ...

[NSTimer scheduledTimerWithTimeInterval:2 
                                     target:self 
                                   selector:@selector(action) 
                                   userInfo:nil 
                                    repeats:NO];
1 голос
/ 10 марта 2016

Простой ответ: [NSThread sleepForTimeInterval: 10.0];

0 голосов
/ 15 сентября 2010

Обратите внимание, что вы не должны думать о задержках в управляемом событиями пользовательском интерфейсе / ОС. Вам следует подумать о задачах, которые вы хотите сделать сейчас, и задачах, которые вы хотите выполнить позже, и кодировать эти подзадачи и планировать их соответствующим образом. например вместо:

// code that will block the UI when done in the main thread
- (void) methodC {
  doA();
  delay(2);
  doB();
}

вы можете захотеть иметь код, который будет выглядеть примерно так:

- (void) methodA {
  doA();
  return;  // back to the run loop where other useful stuff might happen
}

- (void) methodB {
  doB();
}

и затем вы можете запланировать methodB с помощью NSTimer в конце methodA, NSTimer, запущенного как бы ни вызванным methodA, или, что лучше всего, с помощью процедуры асинхронного завершения чего-либо, запущенного методом A.

...