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

我还在通过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,以便尽可能处理内存.它不一定会在关系的另一端释放对象,只会在核心数据中设置一个标志,如果需要,对象可能会变成故障.

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...