前言
在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];
网友评论