我剛剛閱讀了ARC section in the Swift book以及其他一些涉及weak
和unowned
的文章。爲什麼存在薄弱和無主權?爲什麼我們不能總是使用弱?
讀完之後,我對他們是什麼以及他們每個人在什麼情況下都有了清楚的瞭解(另請參閱this SO post,它對此有很好的解釋)。
但是,我不明白爲什麼蘋果甚至想出了這兩個解決方案?從本質上講,從MM的角度來看,這兩者都沒有創造出對被引用對象的強烈引用(即不增加其retainCount
)。那麼,爲什麼還要在這裏打擾並提供兩個MM原語?
現在,開發者需要了解何時使用哪兩種,蘋果在解釋不同的場景方面做得很好,但他們並沒有說爲什麼。例如,它不是很簡單嗎? 只有提供weak
以便開發人員不需要深入瞭解文檔並理解不同的用例?
我想,另一種解釋問題的方法是,爲什麼我們應該使用unowned
,除了蘋果告訴我們這樣?至少從MM的角度來看,這不會產生影響,並根據文檔使用weak
,我們應該使用unowned
不會造成內存泄漏?!
是你的問題「爲什麼蘋果甚至想出了這兩個解決方案?」如果是這樣,這個問題主要是基於意見的,因爲只有蘋果員工可以回答爲什麼構建這樣的語言。 – JAL
@JAL啊不,對不起,我想我的問題並不是100%清楚。蘋果公司的文檔似乎表明,除了他們推薦何時使用哪個軟件之外,「弱」和「無主」之間並沒有區別。從MM的角度來看,它們似乎完全可以互換。他們並沒有明確指出,在某些情況下,編譯器會實際上抱怨一個,但接受另一個,所以我想知道這些建議來自哪裏。 – nburk