有人可以为我提供 "refreshObject:mergeChanges:YES" 的说明吗?
Can someone provide clarification of "refreshObject:mergeChanges:YES" for me?
假设我有一个 "Person" NSManagedObject class:
class Person: NSManagedObject {
NSManaged var name:String?
NSManaged var bestFriend:Person?
}
如何确保将 bestFriend 作为 "Person" 引用不会创建强引用循环?我知道您可以使用 refreshObject:mergeChanges 来管理 CoreData 对象之间的强引用并创建错误,因此强引用不会持续存在。我不明白的是我什么时候使用它,或者我在哪里调用它。我是否在第一次访问 "Person" 对象后使用它?我在离开视图时使用它吗?在保存或删除之前还是之后?如果有人可以对此提供一些说明,我将不胜感激。非常感谢!
您不会有任何内存泄漏问题(据我所知),您可能遇到的唯一问题是存储在内存中的膨胀对象图需要 "trimmed"。
如果你想 "trim" 对象图,我建议你在用完对象图时从对象图中删除未使用的对象,否则它们将再次进入对象图。
因此,每当您使用 Person
完成工作时,请使用 refreshObject:mergeChanges
(使用 mergeChanges:false),bestFriend 将变成故障。
假设我有一个 "Person" NSManagedObject class:
class Person: NSManagedObject {
NSManaged var name:String?
NSManaged var bestFriend:Person?
}
如何确保将 bestFriend 作为 "Person" 引用不会创建强引用循环?我知道您可以使用 refreshObject:mergeChanges 来管理 CoreData 对象之间的强引用并创建错误,因此强引用不会持续存在。我不明白的是我什么时候使用它,或者我在哪里调用它。我是否在第一次访问 "Person" 对象后使用它?我在离开视图时使用它吗?在保存或删除之前还是之后?如果有人可以对此提供一些说明,我将不胜感激。非常感谢!
您不会有任何内存泄漏问题(据我所知),您可能遇到的唯一问题是存储在内存中的膨胀对象图需要 "trimmed"。
如果你想 "trim" 对象图,我建议你在用完对象图时从对象图中删除未使用的对象,否则它们将再次进入对象图。
因此,每当您使用 Person
完成工作时,请使用 refreshObject:mergeChanges
(使用 mergeChanges:false),bestFriend 将变成故障。