Интерфейс пользователя зависает при использовании [PFObject pinAllInBackground] в iOS

У нас есть проблема, когда мы используем [PFObject pinAllInBackground:]в разборе iOS SDK.

Мы обнаруживаем, что когда мы используем [PFObject pinAllInBackground]пользовательский интерфейс будет зависать иногда. Например, мы получили список объектов Post, используя PFQuery, в то время как Post имеет несколько полей указателя, которые включены в запрос. В успешном блоке запроса мы вызываем pinAllInBackground кэшировать все объекты Post, полученные в нашем локальном хранилище (некоторые из этих записей могли быть прикреплены ранее). После этого (не ожидая асинхронного ожидания завершения вывода с помощью BFTask или блока), мы немедленно заменяем источник данных нашего табличного представления на сообщения и перезагружаем табличное представление. Наша проблема заключается в том, что пользовательский интерфейс всегда будет зависать в течение по крайней мере от половины до одной секунды во время этого процесса (например, внезапная остановка при прокрутке табличного представления, отсутствие ответа при переключении в другое представление на вкладке и т. Д.). Если я закомментирую строку pinAllInBackgroundпользовательский интерфейс исчезает. Это всегда воспроизводимо в нашем приложении.

Я также заметил, что PFPinningObjectStore Кажется, что я всегда повторно закрепляю все объекты в моем локальном хранилище данных (у меня 491 объект закреплен в моем приложении, когда я тестировал).

Как я узнал ранее, предполагается, что процесс вывода выполняется в другом потоке, отличном от основного, и, следовательно, он не должен влиять на пользовательский интерфейс, когда мы вызываем pinAllInBackground, Существуют ли какие-либо действия, которые могут противоречить pinAllInBackgroundи блокировать основную очередь? Спасибо!

PS Мы также используем Realm для сохранения некоторых типов объектов. Не уверен, что это связано в любом случае.

0 ответов

Другие вопросы по тегам