美文网首页
oc对象探索 alloc&init

oc对象探索 alloc&init

作者: 来根黄鹤楼啊 | 来源:发表于2021-06-19 01:13 被阅读0次

初步探索 alloc 和 init 

要知道alloc 和 init 都干了什么事情 我们从内存地址和指针地址来分析 

打印之后会发现

alloc

内存地址一样 而指针地址不一样 那么我们探索问题的来了 我们要确定 alloc init 作用 包括 是一个什么样的流程

流程如下

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

我们通过在官网下载源码进行分析

在callAlloc里面有

slowpath & fastpath

借鉴大佬博客

可以看到fastpath里面的判断 hasCustomAWZ() 方法表示判断一个类是否有自定义的 allocWithZone 实现 如果没有走_objc_rootAllocWithZone

我们点击进来看见_class_createInstanceFromZone

再点进去

核心:instanceSize() 、calloc()、initInstanceIsa()

instanceSize() 

cache.fastInstanceSize() :快速计算内存空间 

这里面有一个字节对齐的概念 :概念

如果不是判断成功 进行size计算 

calloc():开辟内存空间

initInstanceIsa():将isa和类进行关联

init

通过源码 init实际返回self

相关文章

  • oc对象探索 alloc&init

    初步探索 alloc 和 init 要知道alloc 和 init 都干了什么事情 我们从内存地址和指针地址来分析...

  • OC对象原理(一) alloc&init探索

    iOS底层原理篇 主要是围绕底层进行源码分析-LLDB调试-源码断点-汇编调试,让自己以后回顾复习Runtime底...

  • OC底层-alloc&init探索

    前言 我们创建一个对象经常用到alloc、init或者new,也大概知道alloc做了分配内存,init做了初始化...

  • 2021 iOS底层提升计划

    iOS底层提升方案 下方学习大纲大家可以参考学习《OC底层、核心编程探索》专栏的索引。 OC底层探索 OC对象占用...

  • isa的初始化&指向分析

    在探索alloc&init一篇中,我们对alloc&init有了初步的了解,其中包括对isa的初始化,本篇我们进一...

  • iOS底层原理探索—class的本质

    探索底层原理,积累从点滴做起。大家好,我是Mars。上文iOS底层原理探索—OC对象的本质中总结了OC对象的底层原...

  • iOS-底层原理7:isa与类关联的原理

    问题 OC对象的本质到底是什么?里面到底是什么结构呢? 探索 在探索oc对象本质前,先了解一个编译器:clang ...

  • iOS底层isa结构分析

    在介绍正文之前,首先需要理解一个概念:OC对象的本质是什么? OC对象本质 在探索oc对象本质前,先了解一个编译器...

  • iOS-OC对象原理_alloc&init

    alloc&init探索 NSLog结果: 用图表示大概是这个样子: 表示我是谁(我在栈上的位置), 表示我指向的...

  • iOS OC对象探索

    oc类、对象探索 首先我们创建一个oc类 然后用clang编译QHPerson.m文件 会生成一个 文件,打开后对...

网友评论

      本文标题:oc对象探索 alloc&init

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