核心数据和对象队列:减少内存使用量

时间:2014-05-17 15:05:29

标签: objective-c core-data memory-management

我需要使用Core Data实现对象队列的持久性。唯一的操作是偷看,删除和弹出。从性能和内存使用的角度来看,有人可以建议一下这样做的最佳方法是什么?可能有数以千计的物体,我不想把它们全部留在记忆中。

[[DataManager shared] push: myItem1];
[[DataManager shared] push: myItem2];
.....
[[DataManager shared] push: myItem10000];
.....


MyItem* item = [[DataManager shared] peek];
while(item != nil){
   if([self processItem: item]){
      [[DataManager shared] delete: item];
   }else{
      break;
   }
   item = [[DataManager shared] peek];
}

提前致谢。很抱歉,如果这是一个愚蠢的问题,我是Core Data的新手,据我所知,它与sqllite数据存储区不同,我不能在Core Data中使用sql技术。

1 个答案:

答案 0 :(得分:1)

  

核心数据将对象保存在内存中,这意味着如果我按1000   他们将在记忆中的对象。

根据您的评论,您可以避免选择正确的保存因子。我试着解释一下。 假设您有1000个要保存的对象。您可以决定保存频率(比如100),然后调用reset来删除特定上下文的对象图。

此外,如果内存中有许多对象但需要减少内存占用,则可以使用refreshObject:mergeChanges:参数调用NO来将对象转为错误。故障对象意味着清除其内存中的属性值。

希望它有所帮助。

P.S。我真的建议你去看看High Performance Core Data