复制从不同线程访问的NSString的内存属性

问题描述:

如果声明为(nonatomic, copy),那么在对属性的每次访问中都复制NSString?复制从不同线程访问的NSString的内存属性

如果字符串是从不同的线程访问/变异的,并且使用副本声明的,是否需要用NSLock封装对字符串的访问?

copy属性指示在分配属性时将创建对象的副本。二传手应该是这个样子:

- (void)setMyProperty:(NSString *)value { 
    _myProperty = [value copy]; 
} 

然而,吸气始终返回对象自身的副本:

- (NSString *)myProperty { 
    return _myProperty; 
} 

最后,如果属性是NSString *,这是不可改变的,还有如果没有问题有很多线程在同一时间读取它。没有必要使用锁来访问该属性。

看看Apple的文档:Copy Properties Maintain Their Own Copy

+0

谢谢。我的意思是从不同的线程访问/变异。 – jarryd