簡體   English   中英

弱和分配屬性之間的差異?

[英]differences between weak and assign property?

我幾乎沒有問題。

1)其中assign屬性將占用內存,因為我們不需要釋放以減​​少引用計數?

2)自動歸零參考和非自動歸零參考有什么區別?它是如何工作的? 怎么會記憶?

weak適用於對象(它們具有引用計數和所有內容),但弱引用不會增加引用計數。 但是一旦對象被釋放(從代碼中的任何位置),對該對象的任何弱引用都將設置為nil 這非常有用,因為如果僅使用強引用和弱引用,則無法使用無效指針(指向已解除分配的對象的指針)。

assign對引用絕對沒有任何作用,它通常用於int,float和其他非對象類型。 您當然可以為這樣的變量分配一個對象引用,但是如果該對象被釋放,您仍然會有一個指向它的內存的指針(現在它是垃圾,當你使用它時會傷害你)。

你對“內存使用”的擔憂很奇怪 - 引用不占用內存,對象也不行。 但是如果要使用它,則無法釋放對象。 初學者的簡單規則是:對於對象,盡可能使用強引用。 當您有理由不使用強引用時,請使用weak(通常用於委托和數據源)。 對於原始類型(int,float,CGRect,...),請使用assign,因為它們不是對象。

assign就像weak但是當它離開堆時指針沒有歸零。 所以,它並不像weak那樣安全。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM