2012-01-04 49 views
-1

內存泄漏是經常發生的問題在iOS的項目。一個Xcode泄漏儀器和一個靜態分析儀沒有找到它們。你如何找到泄漏?你如何捕捉iOS項目中的內存泄漏?

+0

不幸的是,這不是讓你做廣告的地方 - 即使你的意圖是好的。 – Jasarien 2012-01-04 14:01:09

+1

如果幀它作爲一個問題,然後這個帖子會更好[發帖回答自己(http://blog.stackoverflow.com/2011/07/its-ok-to-ask-and-answer-your -own-問題/)。 – Caleb 2012-01-04 14:25:49

+0

完成了。 7個小時後,我可以發佈我的答案。 – Alexey 2012-01-04 14:38:48

回答

0

我已經開發lib其捕獲泄漏對象和與可視化其彼此間的關係。

所有交互通過Xcode的控制檯發生。在Xcode調試和輸入類似的東西按暫停:

po [parser run:@"leaks saveGraph /Users/yourName/Documents/dot/mem.txt"] 

的命令生成一個點工具mem.txt文件(http://www.graphviz.org/)。必須安裝點。然後我們可以將mem.txt轉換爲點文件;

dot -Tdot mem.txt -o mem.dot && open ./mem.dot 

這會在當前時刻顯示來自應用程序的實時和死亡對象的圖形。一些例子:

https://github.com/soniccat/memCheck-for-iOS/raw/master/images/pic1.png
https://github.com/soniccat/memCheck-for-iOS/raw/master/images/pic2.png

從DetailViewController到的UILabel的箭頭意味着DetailViewController的一個對象包含的UILabel的對象。虛線箭頭顯示對象何時死亡。活物體具有白色背景,死物體具有灰色背景。

關於解析器的命令格式和特殊的過濾器(fromlist裏),它刪除您可以閱讀memCheck-for-iOS git hub page所有不必要的對象。

快樂使用:)