ARC下的NSString属性应该强还是复制?

当不用ARC编译时,build议使用NSString等数据types的copy属性。 我无法find有关在ARC模式下使用copy适当文档。 有人能告诉我哪些适用于ARC?

仍然build议复制,因为你想避免传递可变string的东西,然后改变它,而不知道。 副本保证你所拥有的string不会改变。

复制和ARC是正交的:你复制可变对象来“冻结”它们的状态; ARC跟踪对象的引用计数。

NSString对象可能或不可以是可变的。 当你收到一个NSString*作为参数时,你不能确定它是不可变的,除非你检查它的types(甚至那么你可能会得到误报)。 如果您的algorithm在设置后依赖于string没有改变,那么做一个副本是正确的。 另一方面,ARC将确保在您持有强引用的对象时不会释放该对象。

不pipe你使用ARC还是非ARC

copy背后的原因是,你可以保证你的类的内部状态不能从实现之外修改。

如果有人向你传递一个NSMutableString ,并且稍后再修改它,可能会发生这种情况。 这个考虑独立于内存pipe理环境。