Mailcore: Что делает «срочно» в MCOOperation?

Что делает срочное свойство и когда его следует использовать? Я отображаю сводки сообщений, но когда пользователь прокручивает до определенной позиции, мне приходится загружать больше сообщений. Эта операция, похоже, не завершится, пока не будут завершены все сводки, которые я начал отображать. Я предполагаю, что свойство срочности даст приоритет операции загрузки сообщения над операцией рендеринга?


person Community    schedule 08.04.2015    source источник
comment
Попробуйте session.allowsFolderConcurrentAccessEnabled = YES. Это должно улучшить поведение.   -  person Dinh Viêt Hoà    schedule 09.04.2015
comment
Я включил это в своем сеансе, но он все еще работает неправильно. Я поместил NSLogs в блок завершения plainTextBodyRenderingOperation и fetchMessagesByNumberOperationWithFolder, и из журналов видно, что они никогда не запускаются одновременно. Сообщения не начинают извлекаться, пока не завершится рендеринг.   -  person    schedule 09.04.2015


Ответы (1)


Проблема для меня заключалась в том, как MailCore расставляет приоритеты в очередях операций. Мне нужно отображать сводки, поэтому создается много plainTextBodyRenderingOperation (по одному на сообщение). Если пользователь прокручивается до определенного момента, мне нужно загрузить больше сообщений. Я должен поставить это выше рендеринга. Итак, в моем методе загрузки я устанавливаю свойство срочности для двух операций, которые я запускаю для получения данных сообщения. Это означает, что как только я отправляю вызов для загрузки, эти очереди получают приоритет, и рендеринг, похоже, продолжается после их завершения. Возможно, Хоа может дать больше информации, но это сработало для моей ситуации. Я также последовал его предложению в комментариях, чтобы разрешить одновременный доступ к папкам. Это тоже помогло, но для меня ключом был приоритет операции.

person Community    schedule 09.04.2015