我们之前分析了消息查找流程 首先,调用objc_msgSend,从cache中快速查找,命中就执行对应的imp 其次,如果cache中没有找到,就调用lookUpImpOrF...
我们之前分析了消息查找流程 首先,调用objc_msgSend,从cache中快速查找,命中就执行对应的imp 其次,如果cache中没有找到,就调用lookUpImpOrF...
我们在上两篇文章分析了消息的cache查找流程,也就快速查找流程,如果cache命中,那么就直接执行对应的imp,如果没有命中,那么就调用lookUpImpOrForward...
我们接着上一篇文章,继续分析objc_msgSend汇编代码,之前分析到CacheLookup,p16 = 类地址CacheLookup NORMAL, _objc_msgS...
通过clang将OC代码翻译成C++代码之后,我们发现,OC的方法调用的本质是消息发送的过程 clang -rewrite-objc main.m -o main.cpp 所...
一: 汇编指令格式 ARM 汇编器的基本语法,这与 GCC汇编器 的语法有所不同,整体编译的流程如下所示; 二: 汇编代码是怎么转换为二进制机器码的 很简单: 转换协议 例如...
类的结构图如下 之前探索分析了isa和bits,下面来看看cache,它的偏移是16个字节0x10 一. 通过LLDB打印调用方法之后cache的变化情况 cache_t的成...
一. 成员变量 在类的原理分析(上)[https://www.jianshu.com/p/90747a8fb978]通过LLDB调试打印了方法,属性和协议,它们都存储在类的b...
一.我们先来研究一下isa的走位图,类的继承链,元类的继承链 1.isa的走位 现在有两个类LGPerson 和 LGTeacher,我们来打印一下isa的走位 输出结果: ...
简书支持的Markdown语法实在是太少了,简单示例总结如下。 (一)标题 # 一级标题 一级标题 ## 二级标题 二级标题 ### 三级标题 三级标题 #### 四级标题 ...
OC对象本质上是一个结构,为什么这么说呢,我们来看一个简单的对象 这是一个很简单的对象,它有一个属性,我们下一步用CLang把它翻译成C++底层代码 clang -rewri...
直接上图:
结构体内存对齐的三个原则: 1.数据成员对齐原则:第一个数据成员放在偏移为0的位置,之后每个数据成员的存储起始位置从该成员大小的整数倍偏移值开始,比如下一个成员是4字节int...