OGeek|极客世界-中国程序员成长平台

标题: ios - 内存增加每次核心数据迭代 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 10:57
标题: ios - 内存增加每次核心数据迭代

在遍历我的核心数据对象时出现内存问题。当它循环通过 CFData(存储)时,它会不断增加,直到应用程序崩溃。每次循环结束后核心数据不应该释放内存吗?

for (Patient *patient in self.fetchedResultsController.fetchedObjects) {
    for (Exam *examForPatient in patient.exams) {
        //do stuff with examForPatient
    }
}

编辑 - 尝试了以下操作,但行为仍然相同:

for (Patient *patient in self.fetchedResultsController.fetchedObjects) {
    for (Exam *examForPatient in patient.exams) {
        NSLog(@"%@", [examForPatient.examDate description]);

        [self.fetchedResultsController.managedObjectContext refreshObject:examForPatient mergeChanges:NO];
    }
    [self.fetchedResultsController.managedObjectContext refreshObject:patient mergeChanges:NO];
}



Best Answer-推荐答案


当您不再需要某个项目驻留在内存中时,您可以刷新它。
来自文档:
“如果您迭代大量对象,您可能需要使用本地自动释放池 block 来确保尽快释放临时对象”

编辑:见@lnafziger回答

注意:如果您正在更新患者对象或检查对象,则无法刷新它,因为您将丢失对它的所有更改(如果您使用 mergeChanges:YES不会释放其内存)。然后,您需要定期保存并刷新不再需要的对象。

See here了解更多信息。

关于ios - 内存增加每次核心数据迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16533134/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://ogeek.cn/) Powered by Discuz! X3.4