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