美文网首页
我与array.count的"爱恨情仇"

我与array.count的"爱恨情仇"

作者: Michale_Zuo | 来源:发表于2019-05-25 10:24 被阅读0次

     最近在项目中遇到一个现象很奇葩的问题,进入某个页面一直卡在那里了,第一反应是不是什么骚操作导致了主线程的阻塞。没办法这种问题真是只有一步步的调试了。在最后的最后奋斗下,找到了原因。
     阐述下问题的原因,我的某个页面数据源是一个array包装的,由于某个页面的布局是一行有2个,所以我计算某个页面的其中一个模块视图的时候采用了如下的算法

    这是伪代码喔
    NSUInteger row = (array.count + 1) / 2 - 1;
    

     写这个方法的时候考虑到array.count == 0 的时候为-1, array.count > 0的时候计算正确,自认为考虑的比较周全了。但是,"知道真相的我,眼泪掉下来"。请看下图

    图1

     count1是最大值,count2为-1,大家知道是什么原因了吧!array的count属性是NSUInteger类型(无符号整型)

     无符号整型没有负数,当赋值为负数的时候,就会出现问题

    图2

    当给一个NSUInteger类型的值赋值为-1的时候就是给了一个整型最大值(MAX),可以从图中看出规律负数的数值是从最大值倒叙赋值的。

     当数据源count为0,我的方法计算出来的为一个最大高度,系统一直在给这个视图进行计算,渲染主线程"小哥哥"一直都很忙,没时间搞其他事情了。所以就卡在那里了!

    相关文章

      网友评论

          本文标题:我与array.count的"爱恨情仇"

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