美文网首页
iOS alloc 都干了啥?

iOS alloc 都干了啥?

作者: 司徒新新 | 来源:发表于2021-03-14 23:33 被阅读0次

先说alloc的执行顺序吧,说完之后在说

总的来说: alloc的运行顺序:
alloc -> _objc_rootAlloc -> callAlloc -> objc_msgSend
但是在callAlloc里会走
_objc_rootAllocWithZone -> _class_createInstanceFromZone
_class_createInstanceFromZone会执行三个方法
cls->instanceSize (先计算出需要的内存大小)
instanceSize (向系统申请开辟内存,返回地址指针)
obj->initInstanceIsa (关联到相应的类)

alloc(为16字节内存对齐)

会对当前对象 生成一个 如果是空的(没有属性的为8字节大小  但是因为字节对齐 所以会生成一个 16字节的内存地址)
如果有属性,里面每一个属性会有8字节的大小
例子 :
如果里面有两个double属性就会为  8(对象本身的地址字节大小) + 8(属性大小) + 8 (属性大小) 共为24字节
但是因为字节对齐的原因 所以会给出一个 32字节的内存地址
       
 
内存读取方式   小端模式
        
读取对象的内存地址   用 x objc   (x 跟  po 类似)
对象赋值之后 可以用x打印 objc 很长  也可以使用 x/4gx  编排 打印16进制的地址 直接读内存   
然后使用po 读取内存地址 打印值

顺便说一下 init做了什么。。。
什么都没做!!! 只是一个工厂模式,提供给你,让你写构造方法的!

哦! 还有一个new() ,其实就是 alloc init都执行了。并不推荐使用!

睡觉!~~~

相关文章

  • iOS alloc 都干了啥?

    先说alloc的执行顺序吧,说完之后在说 总的来说: alloc的运行顺序:alloc -> _objc_root...

  • [iOS] alloc&init源码学习记录

    在开发过程中,有时会有一个疑问:alloc&init究竟做了什么? alloc 是分配内存,init 具体干了点啥...

  • 2016都干了啥?

    恍然发现,今年又过去一半了。 记得去年过年的时候,想象过很多今年的画面,觉得来年一定可以做好多好多事情。可到了今年...

  • 假期都干了啥

    1.画了一副油画。 零基础简单的尝试了一下,勾起了小时候幼儿园妈妈送我学画画的回忆。如果后期能坚持投入时间,可以从...

  • 今天都干了啥

    爬了一座山 山上有个洞 洞里黑又深 路途堪又远 还有小房间 还有洞分叉 分叉走起来 黑又深的洞 堪又远的路 因为胆...

  • 今都干了啥

    补办户口本去了,个人失误给弄丢了,没有户口本的神兽什么都干不成。这又让我重新思考要不要给神兽办身份证的问题。 户口...

  • 今天都干了啥?

    刚躺上床,才想起还没有日更! 想想今天都干了啥?好像啥也没干呀! 早上起床10点了,匆匆忙忙洗漱好就跟着老公到门市...

  • 都干了点啥

    以后不会睡早觉了,最早也得11点半了,女儿说我开始收银花了记性也好了。 那就只能白天见缝插针胡诌诌几句了,路过的可...

  • oc对象探索 alloc&init

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

  • iOS的KVO和KVC都干了啥?

    【原创博文,转载请注明出处!】之前做iOS开发的时候经常使用KVO来监听对象属性值的变化去执行一些操作,但是从未思...

网友评论

      本文标题:iOS alloc 都干了啥?

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