• iOS UITableView 引起的崩溃问题


     其实 UITableView 应该是在iOS开发中使用最频繁的一个控件,一次同事之间聊天玩笑的说“一个页面,要是没使用UITableView,就好像称不上是一个页面”。虽然是个最常见的控件,但是他的强大是不可否认的,也是出错很高的一个控件。

    1.

    - (UITableViewCell *)dequeueReusableCellWithIdentifier:(NSString *)identifier forIndexPath:(NSIndexPath *)indexPath 

    其实这个方法已经存在很久了,但是想我这样接受新鲜事物能力差一点的人,还是用不习惯。

    使用这个方法需要配套使用

    - (void)registerNib:(nullable UINib *)nib forCellReuseIdentifier:(NSString *)identifier NS_AVAILABLE_IOS(5_0);
    
    - (void)registerClass:(nullable Class)cellClass forCellReuseIdentifier:(NSString *)identifier NS_AVAILABLE_IOS(6_0);

    需要在前面先注册cell,再进行使用,具体的方法网上应该有很多的介绍,在这里我就不多说了,这样使用完代码非常整洁。

    不过需要说明的是,如果不先进行注册,则会引起崩溃。

    今天要说明的第一个闪退,引起的原因就是这个,

    self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;

    上面这段代码,看起来正常无比,但是今天引起闪退的主角就是它,原因就是它加错了位置。

    它被放在了注册cell之前,tableView在进行分割线的设置时候,找到了自己的cell,发现cell并没有,然后引起了闪退。

    解决办法

    self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;放在
    registe之后就可以了;

    2.layout引起的闪退

    -(void)layoutSubviews
    {
        [super layoutSubviews];
    }

    咦!!!又是很常见的代码呀,虽然前辈们经常教育我们,不要在这里处理太多的逻辑,代码,但是我们还是喜欢把大量的代码,尤其是效果放在这个里面,因为真的很好用。

    不过这里 好用是好用,但是不能乱用,这里说实话呢,是真的不应该放太多的处理,除非不得不,而且使用的时候也有要注意的地方,这次我们一起闪退就是在

     [super layoutSubviews];

    后面进行了一些autolayout的操作,导致崩溃

    以上就是我今天和大家分享一点开发中遇到的问题,欢迎各位高手补充呀,说的不对的地方求指正!!!

    
    
  • 相关阅读:
    李宏毅 Keras手写数字集识别(优化篇)
    李宏毅 Keras2.0演示
    李宏毅 线性回归预测PM2.5
    李宏毅 Gradient Descent Demo 代码讲解
    Pandas导入导出&pickle文件模块
    python(29)Tinker+BeautifulSoup+Request抓取美女壁纸
    golang(11) 反射用法详解
    golang(10)interface应用和复习
    golang(09) golang 接口内部实现
    golang(08)接口介绍
  • 原文地址:https://www.cnblogs.com/waiwaibuzhidao/p/5388361.html
Copyright © 2020-2023  润新知