iOS基础面试题及详细答案(真实职场版).docxVIP

  • 1
  • 0
  • 约4.26千字
  • 约 6页
  • 2026-10-12 发布于河北
  • 举报

iOS基础面试题及详细答案(真实职场版).docx

iOS基础面试题及详细答案(真实职场版)

一、Objective-C基础核心题

1.简述OC中的堆和栈的区别

堆和栈是程序内存分配的两种核心方式,在iOS开发中区别非常明确:

栈内存由系统自动分配、自动释放,存储局部变量、基本数据类型、指针变量地址。栈空间固定、容量小、存取速度快,线程独享,不会出现内存泄漏。函数执行结束后,栈内变量立即销毁。

堆内存需要开发者手动管理(MRC)或通过ARC自动管理,所有OC对象都分配在堆上。堆空间灵活、容量大、存取速度慢,全局共享。堆内存如果持有关系处理不当,会出现内存泄漏、野指针问题。

简单总结:变量地址在栈,对象本体在堆。

2.ARC的原理是什么?ARC是完全不用管内存吗?

ARC是自动引用计数机制,本质是编译器在编译阶段自动帮我们插入retain、release、autorelease内存管理代码,不需要开发者手动书写内存管理方法。

ARC并不是完全不用管理内存,只是简化了手动操作。依然需要处理循环引用、野指针、过度持有等问题。ARC只管理堆上OC对象的内存,不管理基本数据类型、CoreFoundation、C语言结构体等内存。

常见ARC需要手动处理的场景:block循环引用、代理属性循环引用、NSTimer常驻引用、CF对象桥接后的内存释放。

3.讲一下strong、weak、assign、copy的区别及

文档评论(0)

1亿VIP精品文档

相关文档