美文网首页
alloc探索

alloc探索

作者: ios小喽喽 | 来源:发表于2022-08-03 17:12 被阅读0次

    alloc流程:

    系统级别就把NSObject的初始化做了,所以NSObject的alloc的调用关系是:

    alloc --> objc_alloc --> calloc --> _objc_rootAllocWithZone

    自定义对象alloc,都需要 重写了NSObject中的alloc方法:

    alloc -> _objc_rootAlloc -> callAlloc -> _objc_rootAllocWithZone -> _class_createInstanceFromZone,

    在_class_createInstanceFromZone中会进行instanceSize、calloc,initInstanceIsa

    instanceSize:算出要要开辟多少内存

    图(1)

    calloc:开辟内存,返回地址指针。注:是在栈内开辟内存

    图(2)

    initInstanceIsa:把传过来的cls类绑定到指针地址obj

    图(3) 图(4)

    Init 做了什么?

    图(5)

    init是一个构造方法,主要是提供给用户入口的,id 是可以强转为需要的类型

    new:等同于alloc + init,从下图可以直接看出来,但是很快捷

    图(6)

    注:不建议使用new,因为我从写构造函数的某些数据时,new中的init不会走

    instanceSize影响的因素:属性

    指针大小是8字节

    相关文章

      网友评论

          本文标题:alloc探索

          本文链接:https://www.haomeiwen.com/subject/zqujwrtx.html