美文网首页
运行时解决数组越界,数组和字典插入空值

运行时解决数组越界,数组和字典插入空值

作者: xiao小马哥 | 来源:发表于2018-02-26 16:39 被阅读61次

    前言

    在Bugly上面发现一些数组越界的bug,在正常的测试中,一直都发现不到问题,为了优化体验,想做一个越界的判断,可又不想改变之前的写法,所以想到运行时解决这个问题。

    以前去数组元素的方法有两种,一个是直接通过下标去取值,array[1]或者[array objectAtIndex:3]
    所以我写了一个分类,用运行时替换这两种方法,包括可变数组和不可变数组

    还有就是给字典或者数组设置了空对象,导致崩溃
    👇是自己测试的方法,都没有遇到崩溃的问题,如果还有对数组和字典的操作导致崩溃,直接Issues我。


    NSArray *array0 = @[];
    NSLog(@"%@",array0[3]);
    NSLog(@"%@",[array0 objectAtIndex:3]);
    
    array0 = @[@"1"];
    NSLog(@"%@",array0[3]);
    NSLog(@"%@",[array0 objectAtIndex:3]);
    
    array0  = @[@"1",@"2",@"3"];
    NSLog(@"%@",array0[3]);
    NSLog(@"%@",[array0 objectAtIndex:3]);
    
    NSMutableArray *muArray0 = @[].mutableCopy;
    NSLog(@"%@",muArray0[3]);
    NSLog(@"%@",[muArray0 objectAtIndex:3]);
    
    [muArray0 addObject:@"1"];
    NSLog(@"%@",muArray0[3]);
    NSLog(@"%@",[muArray0 objectAtIndex:3]);
    
    [muArray0 addObject:@"2"];
    NSLog(@"%@",muArray0[3]);
    NSLog(@"%@",[muArray0 objectAtIndex:3]);
    
    NSObject *objc = nil;
    [muArray0 addObject:objc];
    NSDictionary *dict = @{@"12":objc};
    NSDictionary *dict1 = [NSDictionary dictionaryWithObject:objc forKey:@"222"];
    NSMutableDictionary *muDict = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"value",@"key",objc,@"key1", nil];
    [muDict setObject:objc forKey:@"111"];
    NSDictionary *dict2 = [NSDictionary dictionaryWithObjectsAndKeys:objc,@"key1", nil];
    

    传送门

    相关文章

      网友评论

          本文标题:运行时解决数组越界,数组和字典插入空值

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