ios - iPhone SDK : what is the difference between loadView and viewDidLoad?

标签 ios objective-c iphone uiview

在 iPhone 应用程序中使用 View 和 View Controller 时,谁能解释 loadView 和 viewDidLoad 之间的区别?

我个人的情况是,我从代码中构建所有 View ,我不会也不会使用 Interface Builder,如果这有什么不同的话。

我发现,当我将初始化代码添加到 loadView 时,我经常会得到一个无限的堆栈跟踪,所以我通常在 viewDidLoad 中构建我所有的 subview ......但我真的不清楚每个得到执行,以及放置 init 代码的更合适的位置是什么。最完美的是初始化调用的简单图表。

谢谢!

最佳答案

我可以猜到这里可能是什么问题,因为我已经做到了:

I've found that often when I add init code to loadView, I end up with an infinite stack trace

不要在-loadView中读取self.view。设置它,不要get它。

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

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

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/

相关文章:

iphone - 如何在不打开短信界面的情况下从iPhone应用程序发送短信?

iphone - 如何在 iPhone 中对 NSMutableArray 值 Aa-Zz 进行排序?

ios - 如何在 Swift 中检索约束常量的值?

objective-c - 从 NSuserDefaults 取消归档数据的正确方法是什么?

ios - transitionWithView 不执行翻转动画

objective-c - 在 UIScrollView 中释放带有图像的不可见按钮

iphone - iOS 如何在不将其嵌入 UIWebView 的情况下直接播放 youtube 视频

iphone - 图像元数据丢失

ios - UICollectionView 水平滚动照片库与 swift

ios - Objective-C 中计算 float 的奇怪值