ARC 學習筆記(二)-Outlet與弱引用

當我們使用storyboard時,可以使用Interface Builder生成Outlet對象,然後你會發現其中的內存管理屬性一般都是weak修飾符。其實這是爲了防止循環引用。因爲一般我們都是拖出來的subview,而Outlet的持有者是superview對象,如果再用strong來修飾subview的話,那麼就會出現父子的引用循環。
這裏寫圖片描述

如果不設置爲weak類型,那麼UIViewController就不會釋放這些view的所有權,直到系統調用unload方法,然後你需要在這個方法中將view置爲nil。但是當界面中的控件一多的話,內存泄漏會越來越大。

但是並不是所有的Outlet都是用weak修飾符。當使用Interface builder生成的第一層view或者windows被作爲Outlet來使用的話,那麼就需要設置爲strong類型了。比如,storyboard中的各個scene。原因也很簡單,沒有被任何人強引用的對象,生成之後就會被立即釋放。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章