iOS alloc的流程

前言

之前在做开发的时候,真的没有调试过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做的那些操作,下载苹果源码,调试的时候可能会遇到一写坑,需要自己配置配置一些东西,后期把我自己弄好的提供给大家

你可能感兴趣的:(iOS alloc的流程)