时间:2010-07-26 08:40:47

标签: iphone objective-c

3 个答案:

答案 0 :(得分:18)

viewDidLoad和viewDidUnload彼此不对应。

只有在收到内存警告时才会调用viewDidUnload。然后系统会自动调用你的viewDidUnload。

在正常情况下,当您按下MyViewController并将其弹出时。生命周期将如下所示:

init

viewDidLoad

release

这意味着,无论何时初始化并推送/显示视图,都会调用viewDidLoad。但是当您弹出视图时,将在正常情况下调用该版本,并且将在内存警告案例中调用viewDidUnload。

这是非常暗示的,Apple并未在指南中明确说明。以下是一些参考:Load and Unload cycle

答案 1 :(得分:1)

我想在未调用-viewDidUnload的情况下,视图控制器已被释放。

  1. viewDidLoad:controller加载视图
  2. viewDidUnload:内存警告,控制器卸载视图
  3. viewDidLoad:controller再次加载视图
  4. - :控制器已释放,未明确卸载视图
  5. 你和2个-viewDidLoad电话和1`-viewDidUnload'电话。

    也许还会在NSLog方法中添加-dealloc,并查看-dealloc-viewDidUnload次调用的数量是否与-viewDidLoad次来电的数量相匹配。

答案 2 :(得分:0)

加载新视图时,旧视图仍可在后台加载。 你正在寻找viewWillAppear作为我认为的对手。

只有在记忆警告的情况下才能卸载视图。