相关疑难解决方法(0)

didReceiveMemoryWarning,viewDidUnload和dealloc

我查看过很多帖子,我的书和Apple Developer,并收集了大部分使用这些内容所需的理解.如果某个善良的人能够证实我做对了(或纠正了我)并回答了这两个问题,我将非常感激.

非常感谢,

克里斯.

消息顺序 通常,消息将按以下顺序显示:

  • didReceiveMemoryWarning

  • viewDidUnload(可能由1引起) - 显然只适用于View Controller Classes.

  • 的dealloc

didReceiveMemoryWarning

系统内存不足时调用.

默认情况下,视图控制器已注册内存警告通知,并且在模板方法中,如果没有超级视图,则调用[super didReceiveMemoryWarning]会释放视图,这是一种检查视图是否可见的方法.它通过将其属性设置为nil来释放视图.

操作 - 释放您不需要的任何内容,可能会撤消您在viewDidLoad中设置的内容.不要释放UI元素,因为viewDidUnload应该释放这些元素.

问题1 - 即使View可见,它似乎也会被调用,因此很难看到你可以安全释放的内容.了解这一点以及可以发布的一些示例将非常有用.

viewDidUnload

每当不可见的View Controller的View属性设置为nil时调用,手动或最常通过didReceiveMemoryWarning.

viewDidUnload方法在那里你可以: - 清理你想要的任何其他内容,以节省额外的内存,或者 - 如果你保留了一些IBOutlets,以帮助释放内存,而这些内存不会被卸载的视图释放.

操作 - 通常在dealloc中释放的任何IBOutlet也应该在此方法中释放(并且引用设置为nil).请注意,如果将属性设置为retain,则将它们设置为nil也会释放它们.

的dealloc

在取消分配视图控制器对象时调用,当保留计数降为零时将调用该对象.

操作 - 释放类保留的所有对象,包括但不限于具有保留或复制的所有属性.

弹出视图控制器和内存

问题2 - 弹出视图是否将其从内存中删除?

iphone memory-management uiviewcontroller

18
推荐指数
2
解决办法
1万
查看次数