如果我有一個只讀字符串屬性,是否需要在聲明中指定strong
(或retain
)或copy
?如果我不指定,是否假設其中之一?Objective-C只讀屬性是否需要指定強或複製?
在我看來,所有權屬性只有當你有一個setter時纔有用。
@property (nonatomic, readonly) NSString *name;
如果我有一個只讀字符串屬性,是否需要在聲明中指定strong
(或retain
)或copy
?如果我不指定,是否假設其中之一?Objective-C只讀屬性是否需要指定強或複製?
在我看來,所有權屬性只有當你有一個setter時纔有用。
@property (nonatomic, readonly) NSString *name;
這大部分是正確的。對於readonly
財產,strong
,retain
,weak
和assign
不起作用。但是,如果您還將別處的財產聲明爲readwrite
(最常見的是.m
中的匿名類別),則其他修飾符需要匹配。
很好的答案!但是,如果只讀屬性沒有getter並且在內部不被重新聲明爲readwrite,那麼strong也應該適用於該屬性,因爲它現在有一個ivar,這是正確的嗎? – 2016-08-18 00:25:20
如果未指定 – 2012-02-23 01:28:43
,則始終假定爲「assign」。請參閱http://stackoverflow.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