首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Xcode 6 Instruments Leaks 儀器:循環引用不顯示 Graph 的原因與對策

     編輯:程式設計綜合問答

現象

建立 TTParent (strong children) 與 TTChild (strong parent) 形成循環引用,Instruments Leaks 偵測到紅色洩漏標記,但 **Cycles & Roots → Graph 區域空白**,無法視覺化引用鏈。

原因分析

  • Instruments 的循環引用偵測演算法有閾值與採樣限制,極短生命週期物件 (按鈕點擊中建立、隨即釋放) 可能未被掃描到完整圖譜。
  • Xcode 6 早期版本 Graph 渲染存在已知 Bug,對臨時物件支援不佳。

驗證與替代方案

  1. 延長物件生命週期:將 Parent/Child 存為屬性或單例,再觸發 Leaks 掃描。
  2. 使用 Debug Memory Graph (Xcode 8+):暫停執行 → 點擊 Debug Navigator → Memory Graph,可直接看到雙向箭頭循環。
  3. 靜態分析:Product → Analyze (Shift+Cmd+B) 會標記潛在循環引用。
  4. 手動檢查:Delegate、Block、NSTimer、CADisplayLink 等常見循環來源,加 weak 修飾。

最佳實踐

不依賴 Instruments Graph 確認循環引用,**編碼階段即遵循「Delegate 弱引用、Block 捕獲 self 用 weak、Block 內再 strong」原則**,配合 Memory Graph 定期巡檢。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved