有人可以为我澄清“refreshObject:mergeChanges:YES”吗?
Posted
技术标签:
【中文标题】有人可以为我澄清“refreshObject:mergeChanges:YES”吗?【英文标题】:Can someone provide clarification of "refreshObject:mergeChanges:YES" for me? 【发布时间】:2016-05-11 08:51:54 【问题描述】:假设我有一个“Person”NSManagedObject 类:
class Person: NSManagedObject
NSManaged var name:String?
NSManaged var bestFriend:Person?
如何确保将 bestFriend 引用为“Person”不会产生强引用循环?我知道您可以使用 refreshObject:mergeChanges 来管理 CoreData 对象之间的强引用并创建错误,因此强引用不会持续存在。我不明白的是我什么时候使用它,或者我在哪里调用它。我第一次访问“Person”对象后是否使用它?我在离开视图时使用它吗?在保存或删除之前还是之后?如果有人可以对此提供一些澄清,我将不胜感激。非常感谢!
【问题讨论】:
你想达到什么目的?每当您坚持Person
时,您不想坚持bestFriend
吗?还是你想对对象图进行内存管理?
我想对对象图进行内存管理,确保不会出现强引用循环导致内存泄漏
【参考方案1】:
您不会遇到任何内存泄漏问题(据我所知),您可能遇到的唯一问题是存储在内存中并且需要“修剪”的臃肿对象图。
如果您想“修剪”对象图,我建议您在完成处理后从对象图中删除未使用的对象,否则它们将再次被错误地放入对象图中。
所以,只要你完成了Person
的工作,就使用refreshObject:mergeChanges
(使用mergeChanges:false),而bestFriend 将变成一个错误。
【讨论】:
好的,谢谢您的解释,感谢您的帮助!这是一个很好的回应。我使用泄漏仪器检查泄漏并没有遇到任何泄漏。谢谢!以上是关于有人可以为我澄清“refreshObject:mergeChanges:YES”吗?的主要内容,如果未能解决你的问题,请参考以下文章