【发布时间】:2012-02-12 23:28:27
【问题描述】:
我将数千个数据插入到我的 SQLite 存储的核心数据中。 我的 ManagedObjectContext 的 undomanager 设置为 nil。 我在 for 循环中插入 NSManagedObject。 尝试以两种方式保存上下文,
1 循环完成后(在 for 循环之外)。
for(int i =0;i<1000;i++){
MyEntity *object = [NSEntityDescription insertNewObjectForEntityForName:@"MyEntity" inManagedObjectContext:[self managedObjectContext]];
object.name = [NSString stringWithFormat:@"%d",i];
object.age = [NSNumber numberWithInt:i];
}
[self managedObjectContext] save:nil];
每次插入 2 个(在 for 循环内)。
for(int i =0;i<1000;i++){
MyEntity *object = [NSEntityDescription insertNewObjectForEntityForName:@"MyEntity" inManagedObjectContext:[self managedObjectContext]];
object.name = [NSString stringWithFormat:@"%d",i];
object.age = [NSNumber numberWithInt:i];
[self managedObjectContext] save:nil];
}
最后我为 ManagedObjectContext 调用了重置。
[[self managedObjectContext] reset];
但问题是这个过程(插入)占用的内存在完成后没有取回。
任何人都可以建议我这有什么问题,或者这是预期的行为? 有什么办法可以避免这种内存泄漏?
更新
我试过[[self managedObjectContext] refreshObject:object mergeChanges:NO];
它可以放回一些内存,但不能完全放回。仍在CoreData中寻找管理大量数据的好解决方案。
如果有人向我推荐一个处理CoreData 中大量数据的示例项目(源代码),那么将对我有所帮助。
谢谢。
【问题讨论】:
标签: iphone objective-c ios core-data memory-management