獲取數(shù)組class
Method oldObjectAtIndex = class_getInstanceMethod(objc_getClass("__NSArrayI"), @selector(objectAtIndex:));
核心方法
#import "NSArray+ArrayBounds.h"
#import <objc/runtime.h>
@implementation NSArray (ArrayBounds)
+ (void)load {
[super load];
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{ //方法交換只要一次就好
Method oldObjectAtIndex = class_getInstanceMethod(objc_getClass("__NSArrayI"), @selector(objectAtIndex:));
Method newObjectAtIndex = class_getInstanceMethod(objc_getClass("__NSArrayI"), @selector(change_objectAtIndex:));
method_exchangeImplementations(oldObjectAtIndex, newObjectAtIndex);
});
}
- (id)change_objectAtIndex:(NSUInteger)index{
if (index > self.count - 1 || !self.count){
return nil;
}
else{
return [self change_objectAtIndex:index];
}
}
@end
可變數(shù)組、字典膝昆、可變字典的崩潰問題等(思路和數(shù)組一致,獲取類名的方法及對應的方法名不同而已)
可變字典的類名: __NSDictionaryM
不可變字典的類名:__NSDictionaryI
可變數(shù)組的類名:__NSArrayM
不可變數(shù)組的類名:__NSArrayI