美文网首页
ios - nonatomic和atomic的区别

ios - nonatomic和atomic的区别

作者: Fat_Blog | 来源:发表于2020-10-01 21:49 被阅读0次

    前言

    ios开发中使用@property声明属性时,经常要用到nonatomic和atomic这两个关键字,若不写会默认为atomic

    @property (nonatomic,strong) UIImageView *imageView;
    @property (atomic,retain) UIImage *image;
    

    重点

    atomic和nonatomic的区别在于:

    • atomic是原子性的(原子性则表示这是一个不可再分的操作),nonatomic是非原子性的
    • nonatomic和atomic系统自动生成的setter和getter方法不一样,atomic生成的是有加锁的,而nonatomic是没有加锁的,因此,nonatomic的线程不安全,但访问速度快,而atomic由于加速,访问速度会比nonatomic的要慢,但不一定是线程安全的
    • atomic加锁只是保证setter和getter的有序性 - 比如:线程1调用了A的setter方法,当还没调用完时,线程2调用A的getter方法,但这时候线程2的调用要等线程1的完成才能进行,但是线程1调用了getter,线程2调用了setter,线程3调用了setter。那么这是后线程1调用getter后得出的值是不确定的,有可能是线程2操作后的值,也可能是线程3操作后的值

    相关文章

      网友评论

          本文标题:ios - nonatomic和atomic的区别

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