2012-02-23 78 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

相關問題