簡體   English   中英

在ARC下將NSArray設置為nil

[英]Setting NSArray to nil under ARC

我向所有initdealloc添加了一些日志記錄,以試圖了解為什么隨着運行時間的繼續,啟用了ARC的項目消耗越來越多的內存。 我發現一個視圖控制器是負責任的。 初始化的主要職責是創建一個NSMutableArray並用NSNull對象填充它。 在執行期間,它將這些空對象交換為更有意義的對象,反之亦然-基本的延遲加載設置。

彈出該視圖控制器時,不會釋放當時NSMutableArray中的任何非空視圖。 結果,視圖控制器本身也不會釋放。

我可以通過清空NSMutableArray或將其設置為nil來解決此問題。

是什么使得這有必要? 即使我在ARC下創建數組,將數組設置為nil始終是我的責任嗎? 還是必須有其他方法來保留數組中的對象之一,並防止其自動取消分配?

假設NSMutableArray是實例變量,則應在釋放視圖控制器時將其釋放。 如果在NSMutableArray僅包含NSNull對象時調用了控制器的dealloc ,但是在用“有意義的”內容填充數組時並沒有釋放它,這意味着您無疑具有很強的引用周期 ,即必須有一些引用NSMutableArray的內容中的視圖控制器本身。

暫無
暫無

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

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