atomic使用

平时我们使用atomic的时候,是希望对一个porperty的操作进行一个原子操作,但是这里的原子操作应该是仅仅对应于Setter和Getter方法,如果property是一个array,比如

  • (void)setProp:(NSString )newValue {
    [_prop lock];
    _prop = newValue;
    [_prop unlock];
    }
    按我理解:
    1.此处的线程安全是就getter,setter而言的。比如对于@property(nonatomic,copy)NSString
    str; 当调用self.str = @”HELLO,GUY”;如果是多线程,在一个线程执行setter方法的时候,会涉及到字符串拷贝,另一个线程去读取,很可能读到一半的数据,也就是garbage数据。
    2.另外的话,它也仅限于getter,setter时的线程安全。比如@property(atomic,strong)NSMutableArray *arr;如果一个线程循环读数据,一个线程循环写数据,肯定会产生内存问题。因为它和setter,getter没有关系。