iOS-UITableView数组越界导致的crash

在工作中对于UITableView和UICollectionView的使用必不可少。

我们不难发现UITableView& UICollectionView的危险之处在于哪,在于执行其对于的代理方法的时候,我们所依赖的状态可能会发生变化,例如代码中的数据源被修改过,极有可能发生数组越界的异常。

方法一:
在代理方法内对越界进行判断,这种方法比较暴力,但是比较麻烦。


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {  
    Item *item = nil;  
    if (indexPath.row < [_datasourceArray count]) {  
        item = [_datasourceArray objectAtIndex:indexPath.row];  
    }  
}  

方法二:
给NSArray扩展一个新方法
例如

#import "NSArray+LBJUtil.h"  
  
@implementation NSArray (LBJUtil)  
  
- (id)objectAtIndexJudge:(NSUInteger)index  
{  
    if (index >= [self count]) {  
        return nil;  
    }  
      
    id value = [self objectAtIndex:index];  
    if (value == [NSNull null]) {  
        return nil;  
    }  
    return value;  
}  
  
@end  
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 概述在iOS开发中UITableView可以说是使用最广泛的控件,我们平时使用的软件中到处都可以看到它的影子,类似...
    liudhkk阅读 9,289评论 3 38
  • 因为要结局swift3.0中引用snapKit的问题,看到一篇介绍Xcode8,swift3变化的文章,觉得很详细...
    uniapp阅读 4,859评论 0 12
  • 1:今天给两位朋友讲了笔的原理,然后智慧的种子开花,让我明白:明白空性,明白我现在看到的世界是来自于我过去种的种子...
    陈麒任阅读 578评论 0 0
  • 听说你的城市已经开始要穿棉袄了? 可我依旧在南方的艳阳里吹着风呢~ 小时候 秋天就是金灿灿的麦田和凉爽的风 秋天就...
    雪鲸呀阅读 497评论 5 10
  • 中华文化长寿的第五个原因,简易思维。且看中华文明的起点诗经,都是地地道道的短诗,影响了中国文化几千年;老子的道德经...
    慢慢树阅读 258评论 0 0

友情链接更多精彩内容