美文网首页
面试题:nonatomic和atomic的区别及原理

面试题:nonatomic和atomic的区别及原理

作者: 常在士心 | 来源:发表于2021-08-26 13:57 被阅读0次

    atomic

    是默认的
    对同一对象的set和get的操作是顺序执行的
    速度不快,因为要保证操作整体完成
    线程安全,需要消耗大量系统资源来为属性加锁
    使用atomic并不能保证绝对的线程安全,对于要绝对保证线程安全的操作,还需要使用更高级的方式来处理,比如NSSpinLock、@syncronized等

    nonatomic
    不是默认的
    更快
    如有两个线程访问同一个属性,会出现无法预料的结果
    非线程安全,适合内存较小的移动设备
    在不添加atomic或nonatomic的情况下,默认的是atomic

    atomic修饰的属性,系统生成的 getter/setter 会保证 get、set 操作的完整性,不受其他线程影响。比如,线程 A 的 getter 方法运行到一半,线程 B 调用了 setter:那么线程 A 的 getter 还是能得到一个完好无损的对象。

    nonatomic修饰的属性,不做保持getter完整性保证,但在运行速度上要比atomic快。

    相关文章

      网友评论

          本文标题:面试题:nonatomic和atomic的区别及原理

          本文链接:https://www.haomeiwen.com/subject/gboejltx.html