iOS 进阶面试题及详细答案(工程实战版)_1.docxVIP

  • 0
  • 0
  • 约8.16千字
  • 约 11页
  • 2026-10-12 发布于河北
  • 举报

iOS 进阶面试题及详细答案(工程实战版)_1.docx

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)

1亿VIP精品文档

相关文档