我还在通过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,以便尽可能处理内存.它不一定会在关系的另一端释放对象,只会在核心数据中设置一个标志,如果需要,对象可能会变成故障.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。