美文网首页
探索Objective-C对象创建流程

探索Objective-C对象创建流程

作者: Jniying | 来源:发表于2019-04-11 11:32 被阅读0次

    创建对象在底层的运行原理

    当我们创建对象调用 ObjectClass *obj = [[ObjectClass alloc] init]; 首先来到 alloc 方法 在内部实现以下的一连串调用

    objc_001.png objc_002.png

    callAlloc 方法是一个函数指针 所以_objc_rootAlloc 返回 callAlloc就是 callAlloc 的内部 实现 如下:

    objc_003.png

    一般情况下 class_createInstance 开辟对象内存空间, 如下:

    objc_004.png objc_005.png objc_006.png

    这里 为什么要先字节对齐? 字节对齐: 是为了适配 硬件识别处理数据.
    不同的CPU 对数据处理有不同的方法 那么怎么 去识别数据呢.这就有了字节对齐
    相当于 我们网络传输 的 http 协议. 如果我们不遵循这个协议 就拿不到对应的数据
    OC 对象是16字节对齐的 一个对象 最少开辟的内存空间 16 个字节 (对象 isa 指针就已经8个字节)
    参考文章:
    字节对齐的意义

    objc_007.png objc_008.png

    init 方法在 NSObject 底层事实上什么事情都没干 就是返回 alloc 开辟好内存的对象 的一个 抽象方法. 主要就是留给开发者 使用.

    我的个人博客
    Runtime源码下载

    相关文章

      网友评论

          本文标题:探索Objective-C对象创建流程

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