[英]Setting NSArray to nil under ARC
我向所有init
和dealloc
添加了一些日志記錄,以試圖了解為什么隨着運行時間的繼續,啟用了ARC的項目消耗越來越多的內存。 我發現一個視圖控制器是負責任的。 初始化的主要職責是創建一個NSMutableArray
並用NSNull
對象填充它。 在執行期間,它將這些空對象交換為更有意義的對象,反之亦然-基本的延遲加載設置。
彈出該視圖控制器時,不會釋放當時NSMutableArray
中的任何非空視圖。 結果,視圖控制器本身也不會釋放。
我可以通過清空NSMutableArray
或將其設置為nil來解決此問題。
是什么使得這有必要? 即使我在ARC下創建數組,將數組設置為nil始終是我的責任嗎? 還是必須有其他方法來保留數組中的對象之一,並防止其自動取消分配?
假設NSMutableArray
是實例變量,則應在釋放視圖控制器時將其釋放。 如果在NSMutableArray
僅包含NSNull
對象時調用了控制器的dealloc
,但是在用“有意義的”內容填充數組時並沒有釋放它,這意味着您無疑具有很強的引用周期 ,即必須有一些引用NSMutableArray
的內容中的視圖控制器本身。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.