从一个控制器调到另一个控制器的[UIViewController _loadViewFromNibNamed:bundle:]崩溃

一,现象和分析:

1.崩溃的主要地方是[UIViewController _loadViewFromNibNamed:bundle:] ,是从 A 控制器 push 到 B 控制器后, B 控制器的viewDidLoad仍未调用,就崩溃了.

2.猜测是没有找到合适的 bundle. 或者是查找 bundle 的过程中, 找 view 的联系时出现了问题.

3.排除了view 的联系没有问题后,看看 workflow 里面的解释,试了试移除 ".xcodeproj/project.xcworkspace/xcuserdata/.xcuserdata" ,再重新编译,还会崩溃.

4.在 Build Phases > Compile Sources 中移除了对应的即将要跳转的.m 文件和 .xib 文件, clean 一下,仍会崩溃.

5.然后将创建控制器的 init 方法改成 initWithNibName:bundle: 方法,崩溃就彻底解除了.

(PS:由于调用 init 方法后,会调用 initWithNibName:bundle: 方法,而且调用时两个参数传的都是nil.... 因此在低一点儿的系统有可能会查找失败,还是指明一点儿好. )

原文地址:https://www.cnblogs.com/lz465350/p/6123148.html