2015-11-17 125 views
0

我无法调试NSMutableArray addObject。代码如下:swizzle 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); 

我想有一些错误[自我类]。但我不知道问题在哪里。

+0

什么是'[自我类]'结果呢? –

+0

我想下一个问题是:你想达到什么目的?也许还有另一种方式? – nielsbot

回答

2

NSMutableArray是一个类集群。实例始终是隐藏类的类型(例如您找到的__NSArrayM),因此调整NSMutableArray类本身没什么用处。

0

我认为你正在寻找一种方式来调酒集群,看看NSObjectSafe,这是一个很小的开源框架,它钩最基础的容器常用的功能如[NSMutableArray的ADDOBJECT:]

相关问题