Мне нужно сохранить способ сказать: "iOS, я хочу, чтобы этот метод выполнялся как можно скорее, но НЕ в этой итерации цикла запуска. В ближайшее время, но, пожалуйста, не в этом. Спасибо."
Сейчас я всегда делаю это так:
[self performSelector:@selector(doSomethingInNextRunLoop) withObject:nil afterDelay:0];
[self doSomeOtherThings];
С предположением, что -doSomeOtherThings
всегда будет выполняться ПЕРЕД
-doSomethingInNextRunLoop
.
В документации написано:
Задание задержки 0 не обязательно приводит к тому, что селектор будет выполняется немедленно. Селектор по-прежнему поставлен в очередь на потоки и выполнить как можно скорее.
Таким образом, может случиться так, что метод вызывается немедленно, как если бы я только что отправил прямое сообщение, заставив -doSomethingInNextRunLoop
выполнить до -doSomeOtherThings
?
Как я могу быть абсолютно уверен, что он будет называться a.s.a.p. но НИКОГДА никогда в этой же итерации цикла цикла?
Чтобы прояснить формулировку: с циклом запуска я имею в виду основной поток и итерацию, в которой все методы должны возвращаться, пока поток не будет готов снова для новых событий.