Iphone didReceiveMemoryWarning和viewDidUnload内存问题

Iphone didReceiveMemoryWarning和viewDidUnload内存问题,iphone,memory-management,Iphone,Memory Management,我有3个NSDictionarray的NSDictionarys,如果选择了一个按钮(数据不是在viewDidLoad中创建的),我将填充这些NSDictionarray,我是在这两种方法中删除这些内存,还是仅在其中一种方法中删除?谢谢 您可以使用viewDidUnload来释放视图对象。在这种情况下,您希望在didReceiveMemoryWarning中释放它们,如果它们是IVAR(很可能是,否则您就没有发布它们的参考),您还应该在dealoc中释放它们,这取决于您何时需要这些数据 在de

我有3个NSDictionarray的NSDictionarys,如果选择了一个按钮(数据不是在viewDidLoad中创建的),我将填充这些NSDictionarray,我是在这两种方法中删除这些内存,还是仅在其中一种方法中删除?谢谢

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

中释放它们,这取决于您何时需要这些数据

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