- (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没有关系。