atomic and nonatomic

  • atomic 修饰的对象会保证setter和getter的完整性, 任何线程访问它都可以得到一个完整的初始化的对象,要保证操作的完成速度比较慢。atomic比noatomic安全, 但也不是绝对的线程安全。当多个线程同时调用set和get时,就可能导致获取的对象值不一样,想要线程绝对安全, 就要使用@synchronized:
/* @synchronized 的作用是创建一个互斥锁,它防止不同的线程同时执行同一段代码, 保证此时没有其它线程
对self对象进行修改。这个是objective-c的一个锁定令牌,防止self
对象在同一时间内被其它线程访问,起到线程的保护作用
*/

@synchronized (self) {
        [_elements addObject:element];
    }

  • nonatomic修饰的对象不保证setter和getter的完整性, 所以多个线程访问它时, 它可能返回未初始化的对象, 速度更快,线程不安全。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 29,646评论 8 265
  • 1.设计模式是什么? 你知道哪些设计模式,并简要叙述?设计模式是一种编码经验,就是用比较成熟的逻辑去处理某一种类型...
    龍飝阅读 2,199评论 0 12
  • OC语言基础 1.类与对象 类方法 OC的类方法只有2种:静态方法和实例方法两种 在OC中,只要方法声明在@int...
    奇异果好补阅读 4,358评论 0 11
  • 坚持就有收获,付出就有成果!孩们的坚持一定会带来成果!成都市青白江区祥福小学四(1)班
    卢澜月阅读 150评论 0 0
  • 在我8岁那年的中秋节,我与爸爸、妈妈还有弟弟,一起吃中秋节才有的月饼。 那时候我还小什么都不懂,只知道每年必须要吃...
    无名的小姐阅读 185评论 1 2