【问题标题】:Is it safe to use a retained NSManagedObject after removal from managed object context?从托管对象上下文中删除后使用保留的 NSManagedObject 是否安全?
【发布时间】:2011-03-08 09:25:52
【问题描述】:

我有一个 NSManagedObject,它只有属性(没有获取的属性或关系)。我保留实例,告诉托管上下文从图中删除对象,我保留托管上下文。

从托管上下文中删除后使用实例是否安全?

一步一步:

->retain NSManagedObject
->remove NSManagedObject from managed object context
->persist changes to the managed object context
->use NSManagedObject

【问题讨论】:

    标签: iphone core-data


    【解决方案1】:

    我不相信。一个 NSManagedObject 属于商店。您使用商店来创建和销毁它。如果您决定不这样做,请务必谨慎,因为正如 NSManagedObject 文档所说,“重要的是要记住 Core Data 保留对托管对象的生命周期(即原始内存管理)的独占控制权。”

    ->remove NSManagedObject from managed object context
    

    这不是意味着对象还是被释放了吗?当然你可以从那时起忽略它而不会泄漏。

    因为您有一个只有属性的简单对象,如果您需要保留它们,只需复制它们即可。

    【讨论】:

      【解决方案2】:

      请记住,如果您保留了一个对象,则您有责任释放它。至于一个已删除的对象:您仍然会有一个非零的保留计数,但您必须采取措施不使用它,因为它会导致“Core Data could not fulfill a fault”消息(参见this

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-01-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多