在尝试调试视图控制器启动为空的原因时,我结束了一个奇怪的地方。看看这个:
OffersSearchController *searchController = [[OffersSearchController alloc]
initWithNibName:@"This is a completely bogus nib name."
bundle:nil];
没有一个投诉。我已经看到这种结构崩溃,抱怨无法找到一个名为“这是一个完全虚假......”的笔尖,但这次不是。相反,我的searchController推送到导航控制器,就像它已成功加载一样。但它是空的 - 我可以在我的UINavigationController堆栈下面看到另一个视图的全屏(意外!)。
这里发生了什么?由于某种原因,[OffersSearchController alloc]
是否会回来为零?
loadView
时,请不要实施viewDidLoad
。 Oy公司。漫长的一周。
答案 0 :(得分:1)
以下是答案(感谢@Eric Petroelje建议我发布并接受答案)。
在周五下午的生产力爆发中,移动速度远远超过推荐速度,我在-(void)loadView
而不是-(void)viewDidLoad
中设置了属性初始值设定项和选择器轮数据源数组。
而不是initWithNibName:
调用对loadView的调用被允许传播到UIViewController,它很高兴地初始化了我的字段,就是这样。
答案 1 :(得分:-2)
The documentation for UIViewController initWithNibName:bundle
没有说明会发生什么。据推测,无效的笔尖名称被视为零值。但是,它确实说返回值始终是初始化的UIViewController。
那么,该代码正在做的是分配/初始化一个没有nib的新的OffersSearchController。视图显示为空,因为它是。你以前可能从来没有真正见过这种崩溃,因为它不应该;发生的事情是完全正常的。