在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/