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等等。

上一篇:linux-6的yum软件仓库


下一篇:JavaScript中Unicode值转字符