我们[PFObject pinAllInBackground:]
在 Parse iOS SDK 中使用时遇到问题。
我们发现当我们使用 时[PFObject pinAllInBackground]
,UI 有时会卡住。例如,我们使用 获取 Post 对象的列表PFQuery
,而 Post 有一些包含在查询中的指针字段。在查询的成功块中,我们调用pinAllInBackground
缓存所有检索到的 Post 对象到我们的本地存储中(其中一些帖子之前可能已被固定)。之后(不是异步等到使用 BFTask 或块完成 pin),我们立即用帖子替换表视图的数据源并重新加载表视图。我们的问题是,在此过程中,UI 将始终冻结至少半到一秒(例如滚动表格视图时突然停止,切换到选项卡中的其他视图时无响应等)。如果我注释掉pinAllInBackground
,UI 冻结消失。这在我们的应用程序中总是可以重现的。
我还注意到,PFPinningObjectStore
似乎总是重新固定我本地数据存储中的每个对象(我在测试时在我的应用程序中固定了 491 个对象)。
正如我之前了解到的,pin 进程应该在主线程之外的不同线程中执行,因此当我们调用pinAllInBackground
. 是否有任何类型的操作可能会与主队列发生冲突pinAllInBackground
并阻塞主队列?谢谢!
PS 我们也在使用 Realm 来持久化某些类型的对象。不确定它是否与任何情况有关。