美文网首页
兼容iOS8时遇到的闪退问题

兼容iOS8时遇到的闪退问题

作者: Zhui_Do | 来源:发表于2017-07-18 11:02 被阅读172次

1.xib实现的ViewController初始化时应使用的alloc initwithNibName

在loadView 时
1> 它会先去查找与UIViewController相关联的xib文件,通过加载xib文件来创建UIViewController的view

如果在初始化UIViewController指定了xib文件名,就会根据传入的xib文件名加载对应的xib文件

[[ViewController alloc] initWithNibName:@"ViewController"bundle:nil];

如果没有明显地传xib文件名,就会加载跟UIViewController同名的xib文件

[[ViewController alloc] init]; // 加载ViewController.xib

2> 如果没有找到相关联的xib文件,就会创建一个空白的UIView,然后赋值给UIViewController的view属性
摘自http://www.jianshu.com/p/9bf8f3de2cd1

但是iOS8时不支持(不知道什么时候变更的)

2. 使用僵尸对象(野指针)

使用场景:tableviewcell上有一个按钮点击事件由block实现,在block中又写有tableview的reload方法,导致一点击cell上的按钮,tableview刷新,当前cell就被释放重新加载了

//类似于这样
 if (self.deleteBlock!=nil) {
        //block中reload tableview 导致当前cell变成了野指针
        self.deleteBlock(self.bmModel);
    }
    //此时调用的self(既cell)为野指针导致崩溃
   //此句为举例,解决方法肯定就是block放在最后 后面不能再调用self的一些操作
    self.mModel = nil;

3.数组越界

self.sectionCells[section].space_type != 0(写在tableview的viewforhead代理中)

很奇怪在iOS8上会崩溃,这里崩溃原因是self.sectionCells越界,具体原因未知解决办法只需要判断一下是不是越界就行了
self.sectionCells.count>section&&self.sectionCells[section].space_type != 0

相关文章

网友评论

      本文标题:兼容iOS8时遇到的闪退问题

      本文链接:https://www.haomeiwen.com/subject/onrqkxtx.html