接上篇《iOS容错利器之JKDataHelper》对数据类型进行了容错处理这篇文章我主要对已知数据类型的操作进行处理。主要用到Methodswizzle
的思想。
我这边进行了容错处理的方法有:
NSAarray
NSArray *arr = @[object1,object2];
对于快速创建数组的这种方式进行了容错处理,我们在使用的时候即使某个数据为空,也不会出现崩溃闪的退情况。
- (ObjectType)objectAtIndex:(NSUInteger)index;
对这个方法进了行容错处理后,即使是出了现数组越界的情况,也不会崩溃闪退,而是会有相应的log提示。
NSMutableArray
- (ObjectType)objectAtIndex:(NSUInteger)index;
对这个方法进了行容错处理后,即使是出了现数组越界的情况,也不会崩溃闪了退,而是会有相应的log提示。
- (void)addObject:(ObjectType)object
对这个方法进行了容错处理后,可以避免object为空造成的崩溃闪退的情况,我们也无需在每次使用的时候都进行非空的判断了。
- (void)insertObject:(ObjectType)anObject atIndex:(NSUInteger)index;
对这个方法进行容错处理后,可以避免anObject为空,或者index越界造成的崩溃闪退现象,执行插入操作时,无需考虑传入的参数。
- (void)removeObjectAtIndex:(NSUInteger)index;
对个这方法进行容错处理后,可以避免index越界造成的崩溃闪退现象。
- (void)replaceObjectAtIndex:(NSUInteger)index withObject:(ObjectType)anObject;
对这个方法进行容错处理后,可以不用考虑,index越界和anObject为空造成的崩溃闪退现象。
NSDictionary
NSDictionary *dic = @{object1:key1,object2:key2};
对这个快速创建字典的方法进行容错处理后,即使某个object,key为空,也不会出现崩溃闪退的现象
+ (instancetype)dictionaryWithObject:(ObjectType)object forKey:(KeyType <NSCopying>)key;
对个这方法进行容错处理后,可以避免因为object或key为空造成的崩溃闪退现象。
+ (instancetype)dictionaryWithObjectsAndKeys:(id)firstObject, ...
对个这方法进行容错处理后,可以避免输入的参数不成对造成的崩闪溃退现象。当然了这方个法涉到及了可变参数,在函数内部无法直接使用传入的可变参数作为新的可变参数传入另个一方法。差点掉进坑了里。感趣兴的朋友可以看看我现实的源码哦。
+ (instancetype)dictionaryWithObjects:(NSArray<ObjectType> *)objects forKeys:(NSArray<KeyType <NSCopying>> *)keys;
对这个方法进行了容错处后理后可避以免因为objects,kyes为空,或者objects,keys的count不一致造成的崩溃闪退的现象。
- (instancetype)initWithObjects:(const ObjectType _Nonnull [_Nullable])objects forKeys:(const KeyType <NSCopying> _Nonnull [_Nullable])keys count:(NSUInteger)cnt NS_DESIGNATED_INITIALIZER;
对这个方法进行了容错处理后,即使keys,objects某个为空,或者两者count不一样,也不会出现崩溃,闪退的现象。
大家如果对开源感兴趣的话可看以看开源库地址:JKDataHelper
也可以直接使用:
pod "JKDataHelper"
导入到项目中去。