Xib加载控制器的时候,出现的一个坑

今天在公司的项目中,iOS8出现了push到一个Xib的控制器时,出现crash的现象,直接蹦到了main函数,错误信息:libc++abi.dylib: terminate_handler unexpectedly threw an exception.当实例化这个控制器的时候,用的是

LXFundBrowseViewController *fundBrowseVC = [[LXFundBrowseViewController alloc]init];

后来实例化控制器的方法修改成了

LXFundBrowseViewController *fundBrowseVC = [[LXFundBrowseViewController alloc]initWithNibName:@"LXFundBrowseViewController" bundle:[NSBundle mainBundle]];

就没了这个crash.
按道理说,alloc init方法还是会调用initWithNibName的方法,但是如果你创建控制器的时候,用到了xib,而且后来实例化的时候,没有指定xib的名称,并且项目中出现了一个同名的自定义的view(LXFundBrowseView,上面是LXFundBrowseViewController,这就叫同名)那么系统就会优先匹配这个同名的view作为控制器的view,尽管你在xib里面做了view的关联,
解决方法:
1:new file控制器的时候,命名把viewContoller直接简写成VC(eg:把LXFundBrowseViewController命名为LXFundBrowseVC)
2:使用指定xib名称的实例化方法,即上面的第二种方法

但是为什么在iOS9/iOS10里面就没有出现这种情况呢?
菜鸟一只,还请各位大牛同行,不吝赐教

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值