ARC下的NSString属性应该强还是复制?
当不用ARC编译时,build议使用NSString
等数据types的copy
属性。 我无法find有关在ARC模式下使用copy
适当文档。 有人能告诉我哪些适用于ARC?
仍然build议复制,因为你想避免传递可变string的东西,然后改变它,而不知道。 副本保证你所拥有的string不会改变。
复制和ARC是正交的:你复制可变对象来“冻结”它们的状态; ARC跟踪对象的引用计数。
NSString
对象可能或不可以是可变的。 当你收到一个NSString*
作为参数时,你不能确定它是不可变的,除非你检查它的types(甚至那么你可能会得到误报)。 如果您的algorithm在设置后依赖于string没有改变,那么做一个副本是正确的。 另一方面,ARC将确保在您持有强引用的对象时不会释放该对象。
copy
数量strong
。 使用:
@属性(非primefaces,复制)NSString *名称;
https://devforums.apple.com/message/654033#654033
甚至:
@property NSString * firstName;
不pipe你使用ARC还是非ARC 。
copy
背后的原因是,你可以保证你的类的内部状态不能从实现之外修改。
如果有人向你传递一个NSMutableString
,并且稍后再修改它,可能会发生这种情况。 这个考虑独立于内存pipe理环境。