1
我的项目中有一个库正在添加音频属性侦听器。我真的需要能够阻止它这样做,但我没有源代码。如何调配AudioSessionAddPropertyListener
我在NSNotificationCenter中为addObserver方法做了一个调整。你能帮我对AudioSessionAddPropertyListener做同样的事吗?如果试图在通话中添加的方法与我的白名单不匹配,我想阻止它。否则,我会调用原始方法。
我不知道我应该重载哪个类的负载函数。我正在寻找 Audio.h。我添加了一些pseudo/real/badlyNamed代码,这样你就可以看到我想要做的事情。
#import <AudioToolbox/AudioToolbox.h>
@interface AuidoClassUmm (SOMETHING)
@end
+ (void) load
{
Method original, swizzled;
original = class_getInstanceMethod(self, @selector(AudioSessionAddPropertyListener:selector:name:object:));
swizzled = class_getInstanceMethod(self, @selector(swizzled_AudioSessionAddPropertyListener:selector:name:object:));
method_exchangeImplementations(original, swizzled);
}
-(void) swizzled_AudioSessionAddPropertyListener:selector:name:object:
{
if(//funciton object I don't like)
{
return;
}
else
{
// Calls the original addObserver function
[self swizzled_AudioSessionAddPropertyListener::notificationObserver selector:notificationSelector name:notificationName object:notificationSender];
}
}
噢织补,以及它不会是一个坏主意,但我知道我不能这样做。 – Gandalf458