Вызов селектора NSTimer - PullRequest
       2

Вызов селектора NSTimer

0 голосов
/ 10 августа 2010

Может кто-нибудь объяснить мне, как именно поведение NSTimer?

По сути, я хочу знать, есть ли способ, чтобы событие NSTimer всегда происходило.Событие, если в данный момент что-то выполняется.

Например, в:

NSTimer* testTimer = [NSTimer scheduledTimerWithTimeInterval:.01 target:self selector:@selector(testMethod) userInfo:nil repeats: NO];
for (int i=0; i<9999; i++) {
    NSLog(@"%i", i);
}

testMethod никогда не будет выполняться, поскольку цикл for выполняется при возникновении события.

1 Ответ

2 голосов
/ 10 августа 2010

Когда таймер срабатывает, его селектор добавляется в цикл выполнения, чтобы он выполнялся как можно скорее.

Однако вы создаете цикл, поэтому цикл выполнения никогда не получает изменения для выполнения таймера.селектор, приводящий к тому, что вы видите - приложение ждет завершения цикла перед запуском селектора вашего таймера.

Если у вас долгое выполнение задачи, лучше поместить ее в новый поток - попробуйте посмотреть на executeSelectorInBackground и чтение потоков в target-c.

...