您好,我目前正在构建一个具有以下属性的应用程序:
- 使用核心数据进行存储
- 有一个一次显示一个项目的提要
- 如果没有项目,应用程序将异步调用从服务器获取
处理异步抓取已被证明是相当棘手的。
目前,我们将从服务器获取的项目直接存储到 Core Data 中。
每次应用程序需要一个新项目时,我们都会查询 Core Data 以查找未见过的项目。
由于这种对 Core Data 的持续查询,我们发现应用的性能受到了一些重大影响。
我们考虑过在内存中使用一个数组并为其保留一个索引,但事实证明,一旦我们没有项目,获取的异步方面太复杂了,因为我们必须使用锁和其他并发措施来保持数组线程安全.
你们对我如何减少对 Core Data 的总调用有什么建议吗?
最佳答案
您需要尽量减少访问持久性存储的次数,以便获取您希望显示的合理数量的项目。 Core Data 在故障托管对象方面非常有效,因此内存占用应该不是问题。
当您用完要显示的项目但数组中仍有一些剩余时,请尝试获取更多。
此时,如果您没有得到任何结果,则分派(dispatch)一个具有自己的托管对象上下文的异步队列,创建新的托管对象,保存并通知主上下文,以便它可以合并更改。
完成后,您将返回获取新项目。
关于iphone - 你如何处理在 iOS 中获取数据的单独线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15262371/