【问题标题】:didReceiveMemoryWarning and viewDidUnload memory questiondidReceiveMemoryWarning 和 viewDidUnload 内存问题
【发布时间】:2011-10-14 15:20:50
【问题描述】:

如果选择了一个按钮(未在 viewDidLoad 中创建数据),我有 3 个 NSDictionarys 的 NSArrays,我是在这两种方法中删除此内存,还是仅在其中一种方法中删除?谢谢!

【问题讨论】:

    标签: iphone memory-management


    【解决方案1】:

    这取决于您何时需要这些数据。

    • dealloc 中,您应该释放所有保留的 ivars。
    • viewDidUnload 中,您应该释放在viewDidLoad 中重新创建的所有 ivars。
      • 例如,您可能会发布一个 NSDictionary 映射 id 到 UIButtons,因为无论如何这些都会在 viewDidLoad 中重新创建,但保留一个 NSDictionary 来存储哪些 id 被选中,哪些没有。
    • viewWillDisappearviewDidDisppear 中,您可以释放任何包含在用户离开并返回视图时应重置的数据的ivars。您可能希望也可能不希望有条件地执行此操作,具体取决于用户是否因为模式而离开。
    • didReceiveMemoryWarning 中,您希望释放任何为更快访问而保留但可以从磁盘重新加载或重新计算的数据。
      • 例如,UIViewController 通常会保留它的视图,直到它收到didReceiveMemoryWarning,即使视图不再可见。

    【讨论】:

      【解决方案2】:

      您可以使用viewDidUnload 来释放视图对象。在这种情况下,您希望在 didReceiveMemoryWarning 中发布它们,如果它们是 ivars(它们可能是;否则您将没有参考来发布它们),您还应该在 dealloc 中发布它们。

      【讨论】:

        猜你喜欢
        • 2011-05-20
        • 2011-07-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-10
        • 2012-09-22
        • 1970-01-01
        相关资源
        最近更新 更多