美文网首页
用“方法调配技术”(method swizzling)调试“黑盒

用“方法调配技术”(method swizzling)调试“黑盒

作者: 夜者无念 | 来源:发表于2017-05-08 16:29 被阅读14次

    Objective-C对象收到消息之后,究竟会调用何种方法需要在运行期才能解析出来。也就是说我们可以在运行期间改变调用方法,即不需要源代码,也不需要集成子类来覆写方法就能改变这个类本身调功能。新功能将在本类调所有实例中生效,而不是仅限于覆写了相关方法调那些子类实例。

    类的方法列表会把选择子的名称映射到相关的方法实现之上,使得“动态消息派发系统”能够据此找到应该调用的方法。这些方法均以函数指针的形式来表示,这种指针叫做IMP,其原型如下:

      id (*IMP)(id,SEL,...)
    
    屏幕快照 2017-05-08 下午4.16.10.png

    1,在运行期,可以向类中新增或替换选择子所对应的方法实现
    2,使用另一份实现来替换原有的方法实现,这道工序叫做“方法调配”,开发者常用此技术向原有实现中添加新功能。
    3,一般来说,只有调试程序等时候才需要在运行期修改方法实现,这种做法不宜滥用,会造成难以调试查错。

    相关文章

      网友评论

          本文标题:用“方法调配技术”(method swizzling)调试“黑盒

          本文链接:https://www.haomeiwen.com/subject/cbamtxtx.html