美文网首页iOS面试
iOS Runtime面试题(什么是method swizzli

iOS Runtime面试题(什么是method swizzli

作者: 程序员_秃头怪 | 来源:发表于2019-08-01 16:26 被阅读0次

什么是method swizzling(俗称黑魔法)

简单说就是进行方法交换

在Objective-C中调用一个方法,其实是向一个对象发送消息,查找消息的唯一依据是selector的名字。利用Objective-C的动态特性,可以实现在运行时偷换selector对应的方法实现,达到给方法挂钩的目的。
每个类都有一个方法列表,存放着方法的名字和方法实现的映射关系,selector的本质其实就是方法名,IMP有点类似函数指针,指向具体的Method实现,通过selector就可以找到对应的IMP。
换方法的几种实现方式

  • 利用 method_exchangeImplementations 交换两个方法的实现
  • 利用 class_replaceMethod替换方法的实现
  • 利用 method_setImplementation 来直接设置某个方法的IMP


面试题持续整理更新中,需要拿到第一手大厂面试题及答案文档可以添加 iOS进阶学习交流群:551346706 !结实人脉、讨论技术你想要的这里都有!

相关文章

网友评论

    本文标题:iOS Runtime面试题(什么是method swizzli

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