Я нашел странное поведение на iOS7. У меня есть dispatch_async
фоновый поток, который обрабатывает большую нагрузку, и из этой темы я хочу обновить интерфейс. Так что я сделал именно так:dispatch_async (dispatch_get_main_queue(),^{}); from Background Thread slow on iOS7
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
[self heavyFunction];
dispatch_async(dispatch_get_main_queue(), ^{
[self updateUI];
});
});
КСН 8 и выше приведенный выше код работает, как это предлагается, но работает на устройстве iOS7 Test (iPhone 4s) вызов dispatch_async(dispatch_get_main_queue(), ^{});
занимает 4 секунды каждый. Я allready взял обновление и тяжелую функцию, и такое же поведение все еще появляется. Затем я создал минимальный пример, в котором он не появляется. Поэтому я подумал, что, возможно, что-то еще блокирует мой main_queue на iOS7, но я не могу понять, что это должно быть. На этом ViewController нет другого материала, связанного с пользовательским интерфейсом, пока не закончится [self heavyfunction];
.
Все скомпилировано с XCode 7.3.1 с базовым SDK 9.3 и целью развертывания 7.0.
Кто-нибудь уже имел это поведение и мог указать мне направление, которое может блокироваться здесь?
Используете ли вы прибор времени профайлера? – Paulw11
Да, у меня есть, но я просто получаю '[UIView (Hierachy) layoutBelowIfNeeded]' в цикле в течение 2 секунд в два раза. –
Вы получаете предупреждения о конфликтующих ограничениях? – Paulw11