ppa*_*ojr 8 core-data objective-c uitableview ios
我有一个核心数据应用程序,在一个显示大量的实例UITableView.
我们mainQueueContext在主线程中privateQueueContext运行并在后台线程中运行.
我们在UITableView中加载数据没有问题,但是当我们从API加载刷新版本时,我们将其保存到并将其privateQueueContext合并到mainQueueContext
[self.mainQueueContext mergeChangesFromContextDidSaveNotification:notification];
Run Code Online (Sandbox Code Playgroud)
触发呼叫需要几秒钟
-(void)controllerDidChangeContent:(NSFetchedResultsController *)controller
Run Code Online (Sandbox Code Playgroud)
触发调用的是:
[self.tableView endUpdates];
Run Code Online (Sandbox Code Playgroud)
然后应用程序挂起,CPU进入100%,内存开始无限上升,直到内存不足为止.(见下图)
少于1000个元素,这个问题不会发生.我想知道你是否有人看到过这样的事情.
您可以做的一项改进是使用fetchBatchSize。
\n\n来自苹果文档”
\n\n\n\n\n执行提取时,将评估整个请求并记录所有匹配对象的身份,但一次从持久存储中提取的数据不会超过批量大小的对象\xe2\x80\x99。执行请求返回的数组将是一个代理对象,它可以根据需要透明地对批次进行故障处理。(在数据库术语中,这是内存中游标。)
\n
您还可以使用 fetchLimit 和 fetchOffset 来实现分页。
\n\n干杯,\n亚历山德罗
\n| 归档时间: |
|
| 查看次数: |
296 次 |
| 最近记录: |