Objective-C atomic属性不是线程安全的

atomic(原子的),顾名思义,原子操作应该是线程安全的,然而,真相并不是!

@property (atomic, strong) NSMutableArray *arr; // 多线程操作arr并不安全 

因为atomic关键字只是保证了getter和setter的原子性,相当于分别在这两个方法首尾加解锁,即不会有多个线程同时调用getter或者setter,伪码如下:

- (void)setArr:(NSMutableArray *)arr {
	lock;
	self.arr = arr;
	unlock;    
}

但是,除了getter和setter,还可以通过别的方式访问arr,例如addObject和removeObject等等。 

posted @ 2018-11-28 21:28  happyyoung  阅读(333)  评论(0编辑  收藏  举报