核心数据 – 核心数据:避免在多对多关系中保留循环

我还在通过iOS开发学习我的方式,并与Core Data合作,并且刚刚遇到了保留周期.

通过阅读“核心数据编程指南”,我的理解是,在完成关系之后,您可以使用托管对象上下文方法refreshObject:mergeChanges来确保保留周期被破坏.

所以让我说一个部门和员工之间有很多关系,在我的代码中,我访问了部门的员工关系,这是否意味着我现在需要循环遍历每个员工对象并调用refreshObject:mergeChanges方法?在代码中这将是

for (Employee *anEmployee in department.employees) {
  //some code that accesses an employee's properties

  [context refreshObject:enEmployee mergeChanges:NO];
}

似乎如果我不这样做,我访问的每个员工对象现在将包含对部门的引用,我将最终得到保留周期.

我的理解正确吗?在处理核心数据中的多对多关系时,这是一个标准的方法吗?谢谢.

解决方法

您可以在 Breaking Relationship Retain Cycles查看,保留周期是必要的,以防止不必要的对象的分配.这意味着您在使用对象时保留对象.

如果您完成了该对象并且想要将其变为故障,则应该使用refreshObject:mergeChanges,以便尽可能处理内存.它不一定会在关系的另一端释放对象,只会在核心数据中设置一个标志,如果需要,对象可能会变成故障.

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...