2012-02-23 53 views
7

如果我有一个只读字符串属性,是否需要在声明中指定strong(或retain)或copy?如果我不指定,是否假设其中之一?Objective-C只读属性是否需要指定强或复制?

在我看来,所有权属性只有当你有一个setter时才有用。

@property (nonatomic, readonly) NSString *name; 
+0

如果未指定 – 2012-02-23 01:28:43

+1

,则始终假定为“assign”。请参阅http://stackoverflow.com/questions/9397322/does-property-copy-in-combination-with-readonly-make-sense进行类似的讨论。 – Monolo 2012-02-23 09:30:32

+0

感谢Monolo,链接+1。 – Boon 2012-02-23 20:01:54

回答

9

这大部分是正确的。对于readonly财产,strong,retain,weakassign不起作用。但是,如果您还将别处的财产声明为readwrite(最常见的是.m中的匿名类别),则其他修饰符需要匹配。

+0

很好的答案!但是,如果只读属性没有getter并且在内部不被重新声明为readwrite,那么strong也应该适用于该属性,因为它现在有一个ivar,这是正确的吗? – 2016-08-18 00:25:20

相关问题