我正在使用一個插件,插件的pluginClass中有一個方法「A」。 如果「A」是所謂的,我想打電話給「B」在myCalss.Such爲:在ios中如何添加一個觀察者的方法?
-(void)A{
[myClass B];
}
但我不希望修改代碼插件類。 有什麼辦法可以將觀察者添加到方法或類似的方法嗎? 謝謝你。
我正在使用一個插件,插件的pluginClass中有一個方法「A」。 如果「A」是所謂的,我想打電話給「B」在myCalss.Such爲:在ios中如何添加一個觀察者的方法?
-(void)A{
[myClass B];
}
但我不希望修改代碼插件類。 有什麼辦法可以將觀察者添加到方法或類似的方法嗎? 謝謝你。
我能想到的唯一可接受的選擇是從插件繼承的類,然後你的子類在目標方法中,並將它轉發:
@implementation MyPluginClass : PluginClass
-(void) A {
[super A];
[myClass B];
}
@end
但是我不能調用「A」,並且它自動運行的插件本身。 – Pikachuode
我的代碼基於插件,其他開發者也會使用插件,所以我不能創建子類。 – Pikachuode
似乎很容易解決。使包含一個函數你自己的方法C和C中增加而不是調用A的方法B,然後調用C.
// BEFORE
[pluginClass A]; // a call to method A that u use originally.
// AFTER
[self C];
-(void)C {
[pluginClass A];
[myClass B];
}
謝謝你,但我不能自己打電話給「A」,它會一直被插件調用,而我只是想聽。 – Pikachuode
你可以調配的話,我想......我 – matt
短語我的答案是「只可接受的選項「,因爲攪拌總是很難看:D –
其實現在我正在使用swizzle,我試圖尋找其他方法。例如:'' - (void)viewDidLoad {super viewDidLoad]; NSMethodSignature * sayHi = [self methodSignatureForSelector:@selector(sayHi)]; [[NSNotificationCenter defaultCenter] addObserver:sayHi selector:@selector(sayHiRunning)name:@「」object:nil]; [self sayHi]; } - (void)sayHiRunning NSLog(@「bbbbbb」); } - (void)sayHi NSLog(@「aaaaaaa」); }'''但它不起作用。 – Pikachuode