前言
我们创建一个对象经常用到alloc、init或者new,也大概知道alloc做了分配内存,init做了初始化,但是底层到底干了什么却不太清楚,本篇文章将为大家揭开这个神秘的面纱。
准备
调试方式笔者这边有三种:断点调试、汇编调试(xcode自带)、调试oc源码,我个人比较喜欢的是调试源码,我这边提供下源码下载地址,断点调试、汇编调试这两种方式不是本章的重点,本章重点说下调试源码。
源码下载好后,按照这篇文章去配置,配置好了之后进入我们这篇文章的主题。
开始
我们先创建一个类继承NSObject这个对象,然后我们在main函数中调用这个类进行alloc、init、加入断点,一步步调试,alloc底层调用流程如下:
这边重点注意下_class_createInstanceFromZone这个方法里面的instanceSize方法,这个方法主要是用来计算需要的内存空间大小,calloc方法向系统申请开辟内存,返回地址指针,initInstanceIsa方法主要来将地址指针关联到相应的类。
init方法:return (id)self; 以工厂设计的方式提供了构造方法。
网友评论