美文网首页
iOS atomic 和 nonatomic 区别

iOS atomic 和 nonatomic 区别

作者: 阿木小丸子 | 来源:发表于2023-07-17 17:33 被阅读0次

    atomic和nonatomic的主要区别在于系统生成的getter和setter方法不同。

    atomic:

    • 声明属性时在不添加atomic和nonatomic的情况下,默认是atomic
    • 对同一对象的set和get是顺序执行的
    • 速度较慢,因为要保证操作整体完成
    • 线程安全(但也不是绝对安全),需要消耗大量的系统资源来为属性加锁。

    nonatomic:

    • 不是默认的
    • 线程不安全
    • 更快

    @property (atomic , strong) NSString *name;
    

    如果:
    线程A调用[self setName:@""]
    线程B调用[self setName:@""]
    线程C调用[self name]
    所有这些线程上的操做都会依次顺序执行,也就是说其中一个线程在执行getter或setter操作时,其他线程必须等待,所以name属性的读/写是安全的。
    线程D调用[name release]
    可能会造成crash,因为release不受getter或setter操作的限制。因此atomic只是读写安全,并不能保证线程安全,因为别的线程还能进行读写之外的操作。

    相关文章

      网友评论

          本文标题:iOS atomic 和 nonatomic 区别

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