【问题标题】:How do you handle memory management of outlets in the iPhone SDK您如何处理 iPhone SDK 中插座的内存管理
【发布时间】:2010-11-26 01:49:45
【问题描述】:

由于 KVC 用于在 iPhone 上设置 outlet,有 2 种方法(据我所知)来确保您已正确处理内存管理。

具体来说,我指的是 Aaron Hillegass 写的这个article

我的问题是你使用哪种方法,你的推理是什么?

  • 在 dealloc 中释放所有的 outlet 和 viewDidUnload (确保你设置 它们在 viewDidUnload 中为零。)
  • 让您的网点成为弱引用

就我个人而言,我倾向于使用弱引用,因为它看起来更简洁。

【问题讨论】:

    标签: iphone objective-c cocoa-touch properties nib


    【解决方案1】:

    我使用弱引用。正如您所说,它不那么杂乱,并使已经过于冗长的代码更易于管理

    【讨论】:

    • +1 我的所有网点也都使用 (nonatomic, assign)。那我就不用记得做任何事了。
    • 但正如文章所述,您必须确保在使用此技术时已加载视图 - 否则您可能会在视图卸载后访问 IBOutlets 时遇到随机崩溃。
    【解决方案2】:

    弱引用更容易,是的。更清晰?保留属性同样清晰,您可以更明确地了解何时发布某些内容。

    我个人喜欢主要使用属性来将类的某些属性暴露给外界 - 所以对于 IBOutlets 只有类会操作,我只是声明它们而不使用属性并在 dealloc 中释放它们。

    在任何一种情况下,都将 viewDidUnload 中的 IBOutlet 引用设置为 nil。

    【讨论】:

      猜你喜欢
      • 2010-10-20
      • 2011-07-25
      • 1970-01-01
      • 2011-04-10
      • 2011-10-10
      • 2010-10-28
      相关资源
      最近更新 更多