前言
之前在做开发的时候,真的没有调试过alloc后的流程,以及它调用了那些方法,就知道alloc是申请内存空间,今天小编就探索一下alloc后,到底做了那些事情!
首先,找到这个苹果源码的官网https://opensource.apple.com/
下载最新的这个地址用的更直接 https://opensource.apple.com/tarballs/
按照下仔新的objct4 源码代码:
可以以断点的方式跟进去,具体流程如下:
当一个类调用alloc方法时, alloc方法里面首先调用_objc_rootAlloc方法,_objc_rootAlloc方法里面调用callAlloc方法,callAlloc方法里面会调用_objc_rootAllocWithZone, _objc_rootAllocWithZone方法里面调用_class_createInstanceFromZone,在_class_createInstanceFromZone里面调用 1.cls->instanceSize方法 计算出需要的内存空间;2.calloc方法 向系统申请开辟内存空间,返回指针地址;3.3.obj->initInstanceIsa方法 关联到相应的类
如图所示:
alloc流程图总结:
通过苹果提供的开源代码,清晰可见alloc流程,明白到底alloc做的那些操作,下载苹果源码,调试的时候可能会遇到一写坑,需要自己配置配置一些东西,后期把我自己弄好的提供给大家
网友评论