iOS 面试题目及详细答案.docxVIP

  • 2
  • 0
  • 约1.04万字
  • 约 10页
  • 2026-05-06 发布于河北
  • 举报

iOS面试题目及详细答案

一、基础必考题(入门级,考察基础掌握度)

1.请说说OC中nonatomic和atomic的区别,实际开发中你怎么选?

答案:核心区别是是否保证属性读写的原子性(线程安全的基础)。

atomic:系统会自动为属性的setter/getter方法加锁(自旋锁,iOS10后改为os_unfair_lock),保证同一时间只有一个线程能执行读写操作,避免读写混乱,理论上是线程安全的。但注意:atomic只保证“读写操作本身”的原子性,不保证“使用过程”的线程安全(比如多线程同时读+写,或连续两次写,依然可能出问题)。

nonatomic:不加锁,读写操作不保证原子性,线程不安全,但执行效率高。

实际开发选择:绝大多数场景用nonatomic。原因有两个:1.移动端开发中,多线程操作属性的场景相对较少,且atomic的锁会带来性能损耗(尤其频繁读写的属性,比如列表刷新时的数据源);2.即使需要线程安全,仅靠atomic不够,通常会自己加锁(比如@synchronized、NSLock),更灵活可控。只有在极少数、简单的单线程读写场景,才会考虑atomic(几乎不用)。

2.OC中strong、weak、assign、copy四个修饰符的区别,分别用在什么场景?

答案:四个修饰符核心作用是控制属性的引用计数和内存管理

文档评论(0)

1亿VIP精品文档

相关文档