为什么这个视图控制器不会初始化? (没关系)

时间:2010-06-18 20:13:34

标签: iphone uiviewcontroller

在尝试调试视图控制器启动为空的原因时,我结束了一个奇怪的地方。看看这个:

OffersSearchController *searchController = [[OffersSearchController alloc]
        initWithNibName:@"This is a completely bogus nib name."
             bundle:nil];

没有一个投诉。我已经看到这种结构崩溃,抱怨无法找到一个名为“这是一个完全虚假......”的笔尖,但这次不是。相反,我的searchController推送到导航控制器,就像它已成功加载一样。但它是空的 - 我可以在我的UINavigationController堆栈下面看到另一个视图的全屏(意外!)。

这里发生了什么?由于某种原因,[OffersSearchController alloc]是否会回来为零?

编辑:没关系。以下是教训:当您要实施loadView时,请不要实施viewDidLoad。 Oy公司。漫长的一周。

2 个答案:

答案 0 :(得分:1)

以下是答案(感谢@Eric Petroelje建议我发布并接受答案)。

在周五下午的生产力爆发中,移动速度远远超过推荐速度,我在-(void)loadView而不是-(void)viewDidLoad中设置了属性初始值设定项和选择器轮数据源数组。

而不是initWithNibName:调用对loadView的调用被允许传播到UIViewController,它很高兴地初始化了我的字段,就是这样。

答案 1 :(得分:-2)

如果指定的nib名称无效,

The documentation for UIViewController initWithNibName:bundle没有说明会发生什么。据推测,无效的笔尖名称被视为零值。但是,它确实说返回值始终是初始化的UIViewController。

那么,该代码正在做的是分配/初始化一个没有nib的新的OffersSearchController。视图显示为空,因为它是。你以前可能从来没有真正见过这种崩溃,因为它不应该;发生的事情是完全正常的。