2015-11-17 68 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:]

相關問題