簡體   English   中英

ARC循環保留檢測

[英]ARC circular retain detection

我將一些舊代碼移植到Objective-C ARC(自動引用計數),它看起來效果很好。 當一個相當大的高級對象從我的導航堆棧中彈出時,它不會被釋放,讓我相信我有一個ARC隱藏在我身邊的某個保留周期(或者至少很難跟蹤)。 清除這個潛在保留周期的最佳方法是什么和/或什么是確定ARC下內存泄漏原因的好方法? 謝謝!

我只是轉換了一個較舊的應用程序來使用ARC。 儀器沒有泄漏,但分配繼續增加。 我發現通過查看我知道應該刪除的內容的實時對象,我能夠在沒有發布的情況下追蹤保留。 以下是基本步驟:

  1. 使用儀器中的分配工具
  2. 玩你的應用程序一段時間(如果你知道什么沒有發布,這會更快)
  3. 將統計信息更改為“分配”跳轉欄中的對象
  4. 按類別排序,找到未發布對象的類名
  5. 找到一個活動實例,然后單擊內存地址旁邊的小右箭頭
  6. 現在,您可以查看對象的保留和釋放歷史記錄

儀器中對象歷史的屏幕截圖

最好的方法通常是在儀器應用程序中使用Leaks儀器

來自WWDC 2011的什么是新的儀器”視頻討論了使用儀器在ARC下找到保留周期,從大約38分鍾開始。

暫無
暫無

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

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