http://yulingtianxia.com/blog/2016/06/15/Objective-C-Message-Sending-and-Forwarding/#回顾-objc-msgSend-伪代码
![](https://img.haomeiwen.com/i1408786/011aebeea5386806.gif)
![](https://img.haomeiwen.com/i1408786/76710be04e7d7cb5.jpg)
![](https://img.haomeiwen.com/i1408786/a5af6b78926dddbb.png)
cmp
cmp是比较指令, cmp的功能相当于减法指令,只是不保存结果。cmp指令执行后,将对标志寄存器产生影响。其他相关指令通过识别这些被影响的标志寄存器位来得知比较结果。
//判断对象是否存在
cmp x0
CacheLookup NORMAL //calls imp or objc_msgSend_uncached
![](https://img.haomeiwen.com/i1408786/1f2afbe361fc5c0d.png)
cacheHit
![](https://img.haomeiwen.com/i1408786/e3c3000d62a17dd1.png)
checkMiss
![](https://img.haomeiwen.com/i1408786/c599c1d955444b24.png)
MethodTableLookup
https://www.jianshu.com/p/a4c49fecda79
http://blog.zhengdong.me/2013/07/18/a-look-under-the-hood-of-objc-msgsend/
http://www.arigrant.com/blog/2014/2/18/chisels-print-invocation-command
网友评论