Снижение нагрузки на основной потоке при использовании Dispatch_get_main_queue ()

StackOverflow https://stackoverflow.com/questions/7304396

  •  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 Стиль публикации. Это позволит выполнять ваш код только тогда, когда в вашем приложении будет некоторое время простоя. Видеть Здесь, в документации / посвященном руководстве по программированию о таких методах.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top