在iPhone应用程序中使用 View 和 View Controller 时,有人可以解释loadView和viewDidLoad之间的区别吗?

我的个人情况是,我将根据代码构建所有 View ,如果没有任何区别,则我不会也不会使用Interface Builder。

我发现,通常当我将初始化代码添加到loadView时,最终都会得到无限的堆栈跟踪,因此我通常会在viewDidLoad中完成所有 subview 的构建...但是我真的不清楚每个执行时的执行情况,并且放置init代码的更合适的地方是什么。理想的是初始化调用的简单图。

谢谢!

最佳答案

我猜这里可能是问题所在,因为我已经做到了:



不要在-loadView中阅读self.view。 只设置它,不明白它。

如果当前未加载 View ,则self.view属性访问器将调用-loadView。有无限的递归。

如Apple的pre-Interface-Builder示例所示,在-loadView中以编程方式构建 View 的常用方法更像是这样:

UIView *view = [[UIView alloc] init...];
...
[view addSubview:whatever];
[view addSubview:whatever2];
...
self.view = view;
[view release];

我不怪您不使用IB。我对Instapaper的所有方法都坚持使用这种方法,并且发现自己比处理IB的复杂性,界面怪癖和意想不到的幕后行为要舒服得多。

关于ios - iPhone SDK : what is the difference between loadView and viewDidLoad?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/573958/

10-10 21:05