iOS atomic 和 nonatomic 区别

2023-07-17  本文已影响0人  阿木小丸子

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

atomic:

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只是读写安全,并不能保证线程安全,因为别的线程还能进行读写之外的操作。

上一篇下一篇

猜你喜欢

热点阅读