nonatomic
非原子性割粮,可以同時(shí)執(zhí)行setter和getter
atomic
原子性争便,保證setter和getter的線程安,不能同時(shí)執(zhí)行setter和getter完疫。
atomic例子詳解
線程A執(zhí)行setter泰鸡,線程B執(zhí)行g(shù)etter,若此時(shí)設(shè)置的是atomic壳鹤,線程A沒執(zhí)行完sette盛龄,線程B的getter被鎖住。只有等線程A執(zhí)行完setter芳誓,才能執(zhí)行線程B中的getter余舶。
atomic不是絕對(duì)線程安全的
原因如下:
線程A執(zhí)行setter,線程B執(zhí)行setter锹淌,然后線程A執(zhí)行g(shù)etter匿值,這時(shí)候取到的值已經(jīng)被線程B更改過了。
例子:@property(atomic,strong) NSMutableArray *array;
初始化 array = [NSMutableArray new];
線程A: [array addObject:@"A"];
線程B: [array removeAllObjects];
線程A:array[0];//崩潰