兼容iOS8时遇到的闪退问题

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • *7月8日上午 N:Block :跟一个函数块差不多,会对里面所有的内容的引用计数+1,想要解决就用__block...
    炙冰阅读 2,547评论 1 14
  • 1.badgeVaule气泡提示 2.git终端命令方法> pwd查看全部 >cd>ls >之后桌面找到文件夹内容...
    i得深刻方得S阅读 4,752评论 1 9
  • 概述在iOS开发中UITableView可以说是使用最广泛的控件,我们平时使用的软件中到处都可以看到它的影子,类似...
    liudhkk阅读 9,090评论 3 38
  • 哦吼吼,又研究了几天,把FMDB这个封装好的数据库搞定了,写了个简单的例子,基于FMDB的添删改查操作,界面很一般...
    lichengjin阅读 568评论 0 0
  • 我突然想起那个美丽的字眼“永远”,我们必将永远充满信心地走下去,一起手挽手走向明天,将所有忧虑都看做黎明前的幻觉。
    白饕阅读 185评论 0 0