簡體   English   中英

IBOutlets強或弱 - 它是否真的對內存管理產生影響? (弧)

[英]IBOutlets Strong or Weak - Does it Actually Make a Difference to Memory Management? (ARC)

我最近在這里和其他網站上一直在閱讀有關IBOutlets是強還是弱的內容。 官方判決是他們應該是弱者,除非他們引用頂級xib對象。

這可以。

然而,我還沒有清楚地理解為什么將它們設置為強或弱實際上會對應用程序的內存管理產生影響。 特別是從iOS6開始,viewDidUnload在接收內存警告時不再被調用,因此從這個意義上說,IBOutlets選擇弱或強不會產生任何影響。

我是否正確地認為,對於視圖控制器不再在導航堆棧上(即在它們被加載然后彈出之后),任何宣布為弱的IBOutlet將被釋放?

感謝您的任何見解!

您可能已經注意到,當您直接從Interface Builder插入IBOutlet時,您可以選擇是將其作為弱屬性還是強屬性。 在Apple開發人員庫中進行了一些搜索后,我發現你何時應該使用其中一個:

Outlets通常應該是弱的,除了那些從File的Owner到nib文件中的頂級對象(或者,在iOS中,故事板場景)應該很強。 因此,您創建的插座通常應該很弱,因為:

例如,您創建到視圖控制器視圖或窗口控制器窗口的子視圖的出口是不暗示所有權的對象之間的任意引用。 強大的出口通常由框架類指定(例如,UIViewController的視圖出口或NSWindowController的窗口出口)。

更多

IBOutlets可以聲明為弱,因為它們將在XIB解析期間創建並添加到UIView堆棧中......因此您不需要對該對象的強引用。

當您聲明IBOutlet弱時,確保當UIViewcontroller的主UIView消失時,將刪除每個子視圖而不會發生任何內存泄漏。

暫無
暫無

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

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