У вас есть правильные звонки.
Когда вы вызываете performSelectorOnMainThread:...
, ваш запрос помещается в очередь в цикле выполнения основного потока, то есть, если основной поток выполняется где-то еще в то время, когда обработка будет завершена первой. Как только код вашего основного потока возвращается обратно в цикл выполнения, можно просмотреть и вызвать запрос из фонового потока.
Я не знаю, что определяет приоритет, если есть другие события, поставленные в очередь для цикла выполнения, но в целом я не думаю, что вы можете положиться на него, даже если он будет выполнен в следующий раз.
Это еще одна причина, по которой вам следует стараться свести к минимуму последовательную обработку вашего основного потока (т. Е. Стараться не иметь долго выполняющихся последовательностей в основном потоке - но, вероятно, именно поэтому вы используете фоновый поток в первую очередь).