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