前言
在Bugly上面發(fā)現(xiàn)一些數(shù)組越界的bug,在正常的測試中呻畸,一直都發(fā)現(xiàn)不到問題移盆,為了優(yōu)化體驗,想做一個越界的判斷伤为,可又不想改變之前的寫法咒循,所以想到運(yùn)行時解決這個問題。
以前去數(shù)組元素的方法有兩種绞愚,一個是直接通過下標(biāo)去取值叙甸,array[1]
或者[array objectAtIndex:3]
所以我寫了一個分類,用運(yùn)行時替換這兩種方法位衩,包括可變數(shù)組和不可變數(shù)組
還有就是給字典或者數(shù)組設(shè)置了空對象裆蒸,導(dǎo)致崩潰
??是自己測試的方法,都沒有遇到崩潰的問題糖驴,如果還有對數(shù)組和字典的操作導(dǎo)致崩潰僚祷,直接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];