如果ARC下一个NSString属性强或复制?(Should an NSString propert

2019-06-25 21:25发布

当不使用ARC编译,建议使用copy属性的数据类型,如NSString 。 我找不到对使用适当的文件copy在ARC模式。 有人能告诉我ARC什么是适用的?

Answer 1:

我们仍然建议复制,因为你希望避免的事情通过一个可变的字符串,然后改变它在你自己知道。 副本可以保证你有串不会改变。



Answer 2:

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

NSString对象可能会或可能不会是可变的。 当您收到NSString*作为参数,你不能肯定,这是不可改变的,除非你检查它的类型(即使这样你可能会得到误报)。 如果你的算法依赖于被设置后的字符串不改变,制作一份拷贝是做正确的事。 ARC,在另一方面,将确保在你持有的强引用它的对象不会被释放。



Answer 3:

copy算作strong 。 使用:

@属性(非原子,副本)的NSString *名称;

https://devforums.apple.com/message/654033#654033

甚至:

@属性的NSString *的firstName;

http://developer.apple.com/library/ios/#documentation/cocoa/conceptual/ProgrammingWithObjectiveC/DefiningClasses/DefiningClasses.html#//apple_ref/doc/uid/TP40011210-CH3-SW7



Answer 4:

如果你使用ARC 或非ARC没关系。

在背后的理由copy是如此,你能保证你的类的内部状态,不能从外面执行修改。

如果有人通过你的这种情况可能发生NSMutableString ,再后来修改它。 这考虑是独立于存储管理环境。



文章来源: Should an NSString property under ARC be strong or copy?