iOS对象底层原理探究

142 阅读1分钟

alloc做了什么

通过运行objc4-838.1源码(SXObjcDebug最低支持12.2) alloc方法的底层调用流程: alloc->objc_alloc->calloc->objc_msgSend->alloc->objc_rootAlloc->calloc->objc_rootAllocWithZone->_class_createInstanceFromZone

对象字节对齐

通过alloc或者new创建出来的对象最小的大小为16字节,16字节对齐 字节对齐的算法:

截屏2022-04-15 下午9.27.16.png instanceSize-计算对象需要的内存大小-8字节对齐

calloc-系统实际分配的内存-16字节对齐

对象的本质

对象objc_object是一个结构体,isa + 成员变量的值

结构体的内存对齐规则

截屏2022-04-15 下午9.55.09.png 实践,结构体内部,类型不同,内存大小也不同

截屏2022-04-18 上午12.00.18.png