Objective-C只读属性是否需要指定强或复制?
问题描述:
如果我有一个只读字符串属性,是否需要在声明中指定strong
(或retain
)或copy
?如果我不指定,是否假设其中之一?Objective-C只读属性是否需要指定强或复制?
在我看来,所有权属性只有当你有一个setter时才有用。
@property (nonatomic, readonly) NSString *name;
答
这大部分是正确的。对于readonly
财产,strong
,retain
,weak
和assign
不起作用。但是,如果您还将别处的财产声明为readwrite
(最常见的是.m
中的匿名类别),则其他修饰符需要匹配。
+0
很好的答案!但是,如果只读属性没有getter并且在内部不被重新声明为readwrite,那么strong也应该适用于该属性,因为它现在有一个ivar,这是正确的吗? – 2016-08-18 00:25:20
如果未指定 – 2012-02-23 01:28:43
,则始终假定为“assign”。请参阅http://*.com/questions/9397322/does-property-copy-in-combination-with-readonly-make-sense进行类似的讨论。 – Monolo 2012-02-23 09:30:32
感谢Monolo,链接+1。 – Boon 2012-02-23 20:01:54