Эта строка вызывает селектор secondMethod через 3 секунды:
[self performSelector:@selector(secondMethod) withObject:nil afterDelay:3.0 ];
Используйте его на второй операции с нужной задержкой. Если у вас много кода, поместите его в свой собственный метод и вызовите этот метод с помощью performSelector:
. Оно не блокирует пользовательский интерфейс, как sleep
Edit: Если вы не хотите второй метод, который вы могли бы добавить категорию, чтобы иметь возможность использовать блоки с performSelector:
@implementation NSObject (PerformBlockAfterDelay)
- (void)performBlock:(void (^)(void))block
afterDelay:(NSTimeInterval)delay
{
block = [block copy];
[self performSelector:@selector(fireBlockAfterDelay:)
withObject:block
afterDelay:delay];
}
- (void)fireBlockAfterDelay:(void (^)(void))block
{
block();
}
@end
или, возможно, даже чище:
void RunBlockAfterDelay(NSTimeInterval delay, void (^block)(void))
{
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, NSEC_PER_SEC*delay),
dispatch_get_current_queue(), block);
}
Правильно предупреждать людей об этом, но если вы программируете контроллеры, которым необходимо дождаться внешнего устройства с фиксированным временем обработки, это НЕ НЕПРЕРЫВНО. – user2161301
Как насчет задержки HTTP-запроса при записи в строке поиска? Фильтрация результатов при наборе текста? Ожидая одну секунду, прежде чем запрашивать отфильтрованный список, вместо того, чтобы запрашивать сервер для каждого ключа, пользовательские отводы не кажутся мне бессмысленными. –