Если для waitUntilDone
установлено значение YES
, то это точно прервет выполнение кода, вызывающего performSelectorOnMainThread
. Если он установлен на NO
, он поставит в очередь селектор для выполнения в главном потоке.
Если вызывающая сторона performSelectorOnMainThread
не является основным потоком, то будет ли селектор запущен до завершения «текущего блока кода», будет полностью зависеть от состояния, в котором находится ЦП. Возможно, имеется более одного ЦП таким образом, у вас может быть запланировано 2 ваших потока на одно и то же время, или просто ОС через некоторое время решила запланировать основной поток вместо вашего текущего.
Так что, в принципе, да, эти вызовы могут прервать выполнение текущего блока кода, точно так же, как вы должны быть знакомы с многопоточным программированием.
[Под «текущим кодовым блоком» я предполагаю, что вы имеете в виду вызывающего пользователя performSelectorOnMainThread
]
Обновление:
Ах, да, вы имеете в виду «Может ли это прервать код, который в данный момент выполняется в главном потоке?». Ответ на это, безусловно, нет. В следующем цикле запуска основного потока запланировано выполнение следующего цикла.