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

前言

在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];

传送门

推荐阅读更多精彩内容