OC面试题及详细答案.docxVIP

  • 1
  • 0
  • 约1.28万字
  • 约 12页
  • 2026-05-07 发布于河北
  • 举报

OC面试题及详细答案

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

1.请说明OC中nonatomic和atomic的区别,实际开发中你更常用哪个,为什么?

答案:

核心区别:atomic是原子性的,会对属性的getter/setter方法加一把自旋锁(iOS10后优化,不再是单纯自旋锁),保证同一时间只有一个线程访问该属性,避免线程安全问题;nonatomic是非原子性的,不会加锁,多个线程可同时访问,不保证线程安全。

实际开发中更常用nonatomic,原因有两个:①atomic加锁会消耗系统资源,降低程序运行效率,尤其是频繁访问的属性(比如列表数据、UI相关属性),会明显影响性能;②实际开发中,线程安全往往不是靠atomic来保证的(atomic只能保证属性赋值/取值的原子性,不能保证复杂操作的线程安全,比如多线程同时修改一个数组),通常会用@synchronized、dispatch_queue等更灵活的方式控制线程安全,没必要为了鸡肋的原子性牺牲性能。

补充:UI控件的属性(比如UILabel的text),系统默认是nonatomic,因为UI操作本身就在主线程,不存在多线程访问的问题,用nonatomic更高效。

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

答案:

这四个是最常用的属性修饰符,核心区别在于对引用计

文档评论(0)

1亿VIP精品文档

相关文档