答案 0 :(得分:18)
viewDidLoad和viewDidUnload彼此不对应。
只有在收到内存警告时才会调用viewDidUnload。然后系统会自动调用你的viewDidUnload。
在正常情况下,当您按下MyViewController并将其弹出时。生命周期将如下所示:
init
viewDidLoad
release
这意味着,无论何时初始化并推送/显示视图,都会调用viewDidLoad。但是当您弹出视图时,将在正常情况下调用该版本,并且将在内存警告案例中调用viewDidUnload。
这是非常暗示的,Apple并未在指南中明确说明。以下是一些参考:Load and Unload cycle
答案 1 :(得分:1)
我想在未调用-viewDidUnload
的情况下,视图控制器已被释放。
你和2个-viewDidLoad
电话和1`-viewDidUnload'电话。
也许还会在NSLog
方法中添加-dealloc
,并查看-dealloc
和-viewDidUnload
次调用的数量是否与-viewDidLoad
次来电的数量相匹配。
答案 2 :(得分:0)
加载新视图时,旧视图仍可在后台加载。 你正在寻找viewWillAppear作为我认为的对手。
只有在记忆警告的情况下才能卸载视图。