- 1
- 0
- 约8.1千字
- 约 10页
- 2019-05-03 发布于浙江
- 举报
网址: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)). 更通用的来说,任何一段负责把
您可能关注的文档
最近下载
- 《铁路轨道维护》课件——铁路轨道维护管理组织.pptx VIP
- ISO 31657-2-2025 滑动轴承 稳态条件下流体动压径向滑动轴承 第2部分:多叶轴承计算用特征值 标准立项发展报告.docx VIP
- 沥青混合料配合比设计方法与施工质量控制.pptx VIP
- 12K101-1~4 通风机安装(2012年合订本).pdf VIP
- 合规转利润:降本增效全指南(2026)QBT 4524-2013宠物用清洁护理剂.pptx VIP
- 护理沟通中的案例分析.pptx VIP
- 深度解析(2026)《QBT 5994-2024 除味喷雾剂》.pptx VIP
- 电梯应急救援预案.docx
- 建筑地基基础设计规范(GB50007-2011).docx VIP
- 移动式操作平台专项施工方案.docx VIP
原创力文档

文档评论(0)