Интерфейс пользователя зависает при использовании [PFObject pinAllInBackground] в iOS
У нас есть проблема, когда мы используем [PFObject pinAllInBackground:]
в разборе iOS SDK.
Мы обнаруживаем, что когда мы используем [PFObject pinAllInBackground]
пользовательский интерфейс будет зависать иногда. Например, мы получили список объектов Post, используя PFQuery
, в то время как Post имеет несколько полей указателя, которые включены в запрос. В успешном блоке запроса мы вызываем pinAllInBackground
кэшировать все объекты Post, полученные в нашем локальном хранилище (некоторые из этих записей могли быть прикреплены ранее). После этого (не ожидая асинхронного ожидания завершения вывода с помощью BFTask или блока), мы немедленно заменяем источник данных нашего табличного представления на сообщения и перезагружаем табличное представление. Наша проблема заключается в том, что пользовательский интерфейс всегда будет зависать в течение по крайней мере от половины до одной секунды во время этого процесса (например, внезапная остановка при прокрутке табличного представления, отсутствие ответа при переключении в другое представление на вкладке и т. Д.). Если я закомментирую строку pinAllInBackground
пользовательский интерфейс исчезает. Это всегда воспроизводимо в нашем приложении.
Я также заметил, что PFPinningObjectStore
Кажется, что я всегда повторно закрепляю все объекты в моем локальном хранилище данных (у меня 491 объект закреплен в моем приложении, когда я тестировал).
Как я узнал ранее, предполагается, что процесс вывода выполняется в другом потоке, отличном от основного, и, следовательно, он не должен влиять на пользовательский интерфейс, когда мы вызываем pinAllInBackground
, Существуют ли какие-либо действия, которые могут противоречить pinAllInBackground
и блокировать основную очередь? Спасибо!
PS Мы также используем Realm для сохранения некоторых типов объектов. Не уверен, что это связано в любом случае.