gpt4 book ai didi

iphone - 核心数据内存问题

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:33:14 25 4
gpt4 key购买 nike

我正在将数以千计的数据插入到我的 SQLite 存储的核心数据中。我的 ManagedObjectContext 的 undomanager 设置为零。我在 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 调用了 reset。

[[self managedObjectContext] reset];

但问题是此过程(插入)占用的内存在完成后不会取回。

谁能告诉我这有什么问题,或者这是预期的行为?有什么解决方法可以避免这种内存泄漏?

更新

我试过 [[self managedObjectContext] refreshObject:object mergeChanges:NO];它可以放回一些内存,但不是全部。仍在寻找一个很好的解决方案来管理 CoreData 中的大量数据。

如果有人向我推荐一个在 CoreData 中处理大量数据的示例项目(源代码),那么将对我有所帮助。谢谢。

最佳答案

我们在项目中遇到了同样的问题。重置上下文几乎没有释放任何内存。事实证明,在对所有父上下文进行重置后问题已解决:

NSManagedObjectContext *currentContext = context;

while (currentContext) {

[currentContext reset];
currentContext = [currentContext parentContext];
}

关于iphone - 核心数据内存问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8906843/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com