在Xcode 8中,您可以單擊“調試內存圖”按鈕,在調試工具欄中(顯示在屏幕底部):
只需標識左側面板中您認為應該已解除分配的對象,它將顯示對象圖(如上面的主畫布所示)。這對于快速確定在所涉對象上建立強引用的位置非常有用。從這里開始,您可以開始您的研究,診斷為什么這些強引用沒有得到解決(例如,如果所討論的對象具有來自本應被取消分配的其他對象的強引用,也可以查看該對象的圖表,您可能會發現這個問題(例如,強引用周期、重復計時器等)。
注意,在右邊的面板上,我看到了呼叫樹。我是通過打開方案設置中的“malloc堆?!比罩具x項來實現這一點的:
無論如何,這樣做之后,您可以單擊上面第一個屏幕快照的右面板中的堆棧跟蹤中顯示的相關方法調用旁邊的箭頭,您可以看到最初建立強引用的位置:
上述內存診斷技術(及更多)將在WWDC 2016的后期演示。用Xcode進行可視化調試.
在我最初的回答中,傳統的儀器技術(如果使用舊版本的Xcode特別有用)將在下面描述。
我建議使用具有“記錄參考計數”功能的儀器“分配”工具:
然后,您可以在“儀器”中運行該應用程序,然后搜索您知道正在泄漏的類,然后單擊箭頭鉆進去:
然后,您可以使用右側的“ExtendedDetails”面板鉆研詳細信息并查看堆棧跟蹤:
在“擴展詳細信息”面板中,將注意力集中在黑色代碼上,而不是系統調用的灰色代碼上。無論如何,在“擴展詳細信息”面板中,您可以鉆到源代碼中,在儀器中:
有關使用儀器追蹤記憶體問題的更多資料及示范,請參閱: