В моем проекте есть библиотека, которая добавляет слушателей аудио-свойств. Мне действительно нужно уметь блокировать это от этого, но у меня нет исходного кода.Как подшучивать AudioSessionAddPropertyListener
Я уже делал swizzle для метода addObserver в NSNotificationCenter. Не могли бы вы помочь мне сделать то же самое для AudioSessionAddPropertyListener? Если метод, пытающийся быть добавленным в вызове, не совпадает с моим «белым списком», я хочу его заблокировать. В противном случае я вызову исходный метод.
Я не знаю, для какого класса я должен перегрузить функцию загрузки. Я просматриваю Audio.h. Я добавляю код псевдо/реального/плохого кода, чтобы вы могли видеть, что я пытаюсь сделать.
#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];
}
}
Aww штопка, ну это не плохая идея, но я вижу, что я не могу это сделать. – Gandalf458