Снижение нагрузки на основной потоке при использовании Dispatch_get_main_queue ()
-
25-10-2019 - |
Вопрос
Я генерирую много миниатюр в своем приложении для iPhone, используя GCD. У меня есть что -то, что выглядит так:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
// generate thumbnail
// store thumbnail
dispatch_async(dispatch_get_main_queue(), ^{
// display thumbnail (cellForRowAtIndexPath and cell.imageView.image = ..
});
);
Это работает довольно хорошо, но я хотел бы снизить приоритет для блока дисплея, чтобы иметь более отзывчивый поток пользовательского интерфейса.
Решение
Основная очередь (связанная с основным потоком) не имеет приоритета. Вы не можете изменить его приоритет.
В любом случае, вы можете вместо этого опубликовать NSNotification
с использованием NSPostWhenIdle
Стиль публикации. Это позволит выполнять ваш код только тогда, когда в вашем приложении будет некоторое время простоя. Видеть Здесь, в документации / посвященном руководстве по программированию о таких методах.
Не связан с StackOverflow