【问题标题】:for Xcode produced Core Data managed objects, do I need to add a dealloc method to release variables?对于 Xcode 生成的 Core Data 托管对象,我是否需要添加一个 dealloc 方法来释放变量?
【发布时间】:2011-09-01 08:56:21
【问题描述】:

对于Xcode产生的Core Data托管对象,是否需要添加dealloc方法来释放变量?

所以当我有一个用于我的 iPhone 应用程序的核心数据模型并让 XCode 生成托管对象类时,我注意到没有 dealloc 方法。我是否需要自己手动将 dealloc 方法“释放”到变量/属性?

我看到代码生成的托管对象类有:

  • 该属性在头文件中标记为“保留”
  • 在实现文件中设置为“@dynamic”(即不是@sythesise)

谢谢

【问题讨论】:

    标签: iphone ios core-data memory-management nsmanagedobject


    【解决方案1】:

    您不需要(也不应该)修改这些生成的文件。 @dynamic 意味着属性实现将在运行时提供。 Dynamic Properties

    【讨论】:

      【解决方案2】:

      这有两个部分。对于您在模型中定义的属性,不要在 dealloc 方法中释放它们。 Core Data 正在为您管理这些。但是,如果您将其他 ivars 添加到生成的类中,假设您有一个 imageData 属性,然后从中制作一个 UIImage 并保存在您的 NSManagedObject 子类中,那么您需要添加 dealloc 方法并像在任何其他对象。

      我强烈建议您开始使用mogenerator。这很好,因为它会生成一个机器文件和一个用户文件,以将自动为您处理的内容与您的自定义代码分开。

      【讨论】:

      • 谢谢 - re mogenerator 用 XCode4 尝试过它并遇到了一些问题 - 似乎它还没有 re XCode4 - github.com/rentzsch/mogenerator/issues/48
      • 是的,自动支持还不存在,但我在手动触发 applescript 以生成文件方面没有任何问题。您只需要记住在对模型进行更改后执行此操作。我暂时先忍受一下,因为我更喜欢机器和用户代码的单独文件。
      • 哦,我明白你的意思了 - 我使用“类别”添加了几个方法,其中一个由 xcode 创建的托管对象
      【解决方案3】:

      虽然您不需要发布 Core Data 托管属性,但您应该清理自定义 Core Data 子类创建的任何属性或实例变量。但是,您不能依赖在 Core Data 子类上调用 dealloc。使用 willTurnIntoFault 执行任何必要的清理。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多