- 0
- 0
- 约8.16千字
- 约 11页
- 2026-10-12 发布于河北
- 举报
iOS进阶面试题及详细答案(工程实战版)
一、内存管理进阶
1.详细讲讲iOS引用计数的实现原理,引用计数存在哪里?
iOS引用计数是Objective-C手动内存管理、ARC机制的核心底层逻辑,其计数存储位置分两种情况,并非统一存在一处:
对于普通OC对象:引用计数主要存储在对象对应的isa指针附属信息中。64位系统下isa指针经过优化,是一个联合体结构,预留了extra_rc字段,专门用于存储少量引用计数值,无需额外开辟内存,效率极高。
当对象引用计数数值较大,isa内部的extra_rc字段存储空间不足时,系统会自动在堆上开辟一块独立的散列表存储空间,专门存放该对象的引用计数,规避存储空间受限问题。
对于TaggedPointer对象(字符串、数字等轻量对象):这类对象没有堆内存、没有isa结构体,引用计数直接编码存储在指针本身的二进制位中,不占用额外内存,这也是TaggedPointer读写效率极高的核心原因。
核心底层逻辑:对象执行retain时,系统判断是否为TaggedPointer,若是则直接修改指针位;若为普通对象,优先累加isa内的extra_rc,溢出后操作全局散列表。release操作则反向递减,计数归零时触发dealloc方法。
2.ARC下__strong、__weak、_
原创力文档

文档评论(0)