我使用其他团队编写的Core Data继承了iPhone应用程序的代码。在查看对象之间的关系以及如何在代码中创建/使用对象时,我意识到内存泄漏到永久存储中。当我从Core Data中删除所有顶级对象时,那里遗留了对象。更重要的是,有一个操作,其中一个对象的值/关系被复制到另一个对象,这留下了核心数据中的孤立对象。
我已经修复了问题,并且Core Data中不再存储任何新的孤立对象。现在的问题是如何从已经使用漏洞应用程序的现有用户的永久存储中删除这些孤立对象谁知道多长时间?
我最初的想法是将顶级对象复制到另一个ManagedObjectContext。然后删除原始上下文中的所有对象。最后将顶级对象复制回原始上下文。有没有人看到任何问题或有更好的想法?
答案 0 :(得分:1)
孤立对象应该具有空关系,因此您可以只获取该空关系并删除返回的对象。
您可能希望更新数据模型以防止孤立对象。孤儿通常是设计糟糕的模型的标志。确保所有关系都具有互惠性,并在适当时建立所需的关系。您还可以添加验证以防止孤儿。