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