从C的伪代到汇编,动手实现objc_msgSend.docxVIP

  • 1
  • 0
  • 约8.1千字
  • 约 10页
  • 2019-05-03 发布于浙江
  • 举报

从C的伪代到汇编,动手实现objc_msgSend.docx

网址:edu.51CTO.com 从C的伪代码到汇编,动手实现objc_msgSend objc_msgSend 函数支撑了我们使用 Objective-C 实现的一切。Gwynne Raskind,Friday QA 的读者,建议我谈谈 objc_msgSend 的内部实现。要理解某件事还有比自己动手实现一次更好的方法吗?咱们来自己动手实现一个 objc_msgSend。 Tramapoline! Trampopoline! (蹦床) 当你写了一个发送 Objective-C 消息的方法: [obj?message]? 编译器会生成一个 objc_msgSend 调用: objc_msgSend(obj,?@selector(message));? 之后 objc_msgSend 会负责转发这个消息。 它都做了什么?它会查找合适的函数指针或者 IMP,然后调用,最后跳转。任何传给 objc_msgSend 的参数,最终都会成为 IMP 的参数。 IMP 的返回值成为了最开始被调用的方法的返回值。 因为 objcmsgSend 只是负责接收参数,找到合适的函数指针,然后跳转,有时管这种叫做 trampoline(译注:[蹦床](/wiki/Trampoline(computing)). 更通用的来说,任何一段负责把

文档评论(0)

1亿VIP精品文档

相关文档