6

我知道有很多關於'強'與'弱'的文字。但是所有文檔都表示,兩者都是100%同義詞,您可以使用'strong'代替'retain',反之亦然。強與保留在ARC

我的問題是:如果它們相同,蘋果爲什麼會引入新的'strong'關鍵字?我已經在一個示例項目中測試了這兩個屬性,並且「strong」和「retain」屬性屬性看起來都是一樣的。難道你不認爲如果蘋果引入了「強」屬性,它應該禁止使用「保留」屬性?或者我錯過了什麼?

+1

http://stackoverflow.com/questions/8927727/objective-c-arc-strong-vs-retain-and-weak-vs-assign – 2015-03-03 11:14:36

+1

'strong'和'retain'幾乎是一樣的,但因爲在ARC中你不需要擔心_retaining-releasing_對象,對於ARC中的屬性來說,'strong'在邏輯上更合適......就像在MRR中,'retain'與'release'或' autorelease',在ARC環境中,'strong'沒有這種相反的等價物,這就是爲什麼在ARC中使用'strong'而不是'retain'更符合邏輯的原因;如果這對你有意義。 – holex 2015-03-03 11:17:55

+0

@Katoch我已經讀過它指向同樣的東西強=保留,我明白。但問題是,爲什麼要在開發人員心中產生懷疑(儘管我總是使用強大的),因爲保留與手動內存管理有關,他們應該完全停止在ARC項目中使用保留,爲什麼它仍然在ARC中佔據一席之地? – IOSCODER 2015-03-03 11:25:00

回答

9

retain是預ARC會留下的剩餘空間,您可以根據是否希望它在內存中掛起來增加/減少對象retain count

很明顯,使用ARC時,您不必再擔心這一點,我懷疑retain可能僅僅是爲了易於使用,爲更有經驗的Objective-C程序員使用。

弧線最流行的關鍵字是:(strong, weak, nonatomic, readonly, copy)

+0

是的最後我認爲我們可以給這個解釋。 – IOSCODER 2015-03-03 15:33:32