我没有调整NSMutableArray addObject。代码如下:
Method ori_Mehtod = class_getInstanceMethod([self class], @selector(addObject:));
Method swi_Method = class_getInstanceMethod([self class], @selector(swi_addObject:));
method_exchangeImplementations(ori_Mehtod, swi_Method);
但是,我找到了一种有用的方法,如下所示:
Method orig = class_getInstanceMethod(NSClassFromString(@"__NSArrayM"), NSSelectorFromString(@"addObject:"));
Method override = class_getInstanceMethod(NSClassFromString(@"__NSArrayM"), @selector(addObject_override:));
method_exchangeImplementations(orig, override);
我猜[self class]有些不对劲。但我不知道问题出在哪里。
答案 0 :(得分:2)
NSMutableArray
是一个类集群。实例始终是隐藏的类类型(例如您找到的__NSArrayM
),因此调整NSMutableArray
类本身并没什么用。
答案 1 :(得分:0)
我认为你正在寻找一种混合群集的方法,看一下NSObjectSafe,它是一个很小的开源框架,它挂接了大多数常用的Foundation容器函数,如[NSMutableArray addObject:] < / p>
答案 2 :(得分:0)