美文网首页iOS开发 技术集锦iOS开发UITableView
UITableView之separatorStyle在iOS8上

UITableView之separatorStyle在iOS8上

作者: CarvenChen | 来源:发表于2017-07-30 20:05 被阅读212次

        上个月,公司新上线的APP捕捉到闪退问题,而且频率还挺高的,由于是一款供给自己公司内部使用的APP,业务部门的同事反应比较强烈,最终找到的解决问题的方法很简单,但是真正值得一说的,是寻找问题的过程。

        由于没有iOS8的测试手机,只能在xcode中下载的iOS8.1的模拟器,下图是模拟器运行后控制台中展示的闪退错误信息:

UITableview报错

        从图上的截图,我的第一反应是,那个cell没有定义好,导致了闪退,此后,我对相关的额控制器进行了仔细的排查,但是排查完发现,并没有哪个cell没有按步骤处理。此时想到,可以通过断点的形式,找到出问题的位置。。。。真是浪费了不少时间。

添加断点的位置 添加的断点

在以上步骤完成之后,运行APP,效果如下图:

代码闪退的位置

此时,更是一头雾水,这句每天都会写的代码,怎么会有问题。。。。

更神奇的是,注释掉这句话之后,竟然可以完美运行。。。。。。。傻眼

于是,开始疯狂百度。。。。这个不是。。。这个。。。不是。。。。这个。。。。不看了。。。百度的答案,貌似没有第二个了。

此时,想出的解决方案有两个:

第一:将cell重写,不适用上面报错的代码,但是内心是多么的抗拒啊。。。这句代码凭什么不能写;

于是选择第二方案:找到闪退原因。

于是有了这段定义tableView的代码:

世上最简单的定义tableview方法

运行。。。正常。。。

注释掉一行之后运行

注释一行

运行。。。。竟然是OK的。。。。瞎了

难道是tableFooterView造成的闪退?还是因为我没有设置frame造成的?

于是又尝试了下面的情况:

第n个尝试

还是闪退。。。

******于是,突然想到难道是初始化的顺序导致的问题?

最终解决办法

交换了两个设置的顺序,运行。。。。。完美了。。。

最终找到问题的解决方案尽然是separatorStyle的设置必须在tableFooterView、tableHeaderView之前。

当然,这个问题也只在iOS8上才会出现,但是目前iOS8的市场保有量还是挺大的,应该注意这个问题。至于为什么会出现这个问题,或者是iOS底层出现的什么问题,暂未进行过多的研究,欢迎指导的同学留言交流。

以上,只是个人对于遇到的这个问题以及解决过程的简单记录,希望能够帮到遇到同样问题的同行们。

第一次发,不喜勿怪,手下留情,谢谢!

-------------------更新 20171015----------------

二楼的小伙伴提供了新的解决办法

“把separator放在cell的注册之后,不管separator和tableFooterView的先后顺序,就能顺利执行”

这个方案尝试之后也是可以避免闪退发生的,但是原本提供的方法在哪个版本上仍然闪退还需要再次验证,尚未发现

相关文章

网友评论

  • 4b39f29287cc:应该是第二个
    “把separator放在cell的注册之后,不管separator和tableFooterView的先后顺序,就能顺利执行”
    CarvenChen:是的
  • CarvenChen:@红红火火恍恍惚惚哼哼哈哈黑乎乎 你好,我是在8.3的系统上测试的以上问题,能给一下你尝试的系统么?
    红红火火恍恍惚惚哼哼哈哈黑乎乎:@CarvenChen 哈哈可以,我看了小伙伴的手机是8.3版本的。这个执行顺序很玄学,道理我也没搞明白。看你的文章我也学习了,感谢,哈哈
    CarvenChen:@红红火火恍恍惚惚哼哼哈哈黑乎乎 我也试了你说的方案,感觉你提供的方法更靠谱,学习了:+1:
    红红火火恍恍惚惚哼哼哈哈黑乎乎:@CarvenChen 当时我也是拿同事iOS8的手机试的。具体8点几忘了,下次我再要来看下
  • 红红火火恍恍惚惚哼哼哈哈黑乎乎:朋友,我也碰到这个问题,也是在iOS8上出现,但我发现并不一定是这样啊。
    我试了你说的正确的顺序,separator先 tableFooterView后,一样报错,崩在separator上。
    然后我把separator放在cell的注册之后,不管separator和tableFooterView的先后顺序,就能顺利执行。
    这个问题我也是纳闷。。

本文标题:UITableView之separatorStyle在iOS8上

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