13、用“方法调配技术”调试“黑盒方法”
类的方法列表会把选择子的名称映射到相关的方法实现上,使得“动态消息派发系统”能够据此找到应该调用的方法。这些方法均以函数指针的形式来表示,这种指针叫IMP,其原型如下:
id (*IMP)(id, SEL, ...) “方法调配”(method swizzling)
// 获取方法实现
Method class_getInstanceMethod(Class aClass, SEL aSelector)
// 交换两个方法的实现
void method_exchangeImplementations(Method m1, Method m2) 使用可以看这篇: iOS_Runtime是什么?原理?作用?怎么实现weak?使用后面的举例。
要点:
在运行期,可以向类中新增或替换选择子所对应的方法实现
使用另一份实现来替换原有的方法实现,这到工序叫做“方法调配”,开发者常用此技术向原有实现中添加新功能
一般来说,只有调试程序时才需要在运行期修改方法实现,这种做法不易滥用
Last updated
Was this helpful?