2017-08-17 76 views
-1

我的iOS應用程序有一些內存泄漏。我標記了一代人,打開了一個新的VC,回到了前一個VC,並在第二個VC的deinit被調用後標記了第二代。儀器泄漏工具提示

儀器清楚地表明我有泄漏。但是我無法理解發生了什麼。例如,下面的圖片,泄漏出現在方法initScrollView()發生,但annotations顯示93.5%上,根據我的,不能漏線...

我已經尋找教程,但我不能」找到一個很好的啓發我最後一部分的東西:瞭解導致泄漏的原因。即使我知道這需要一些研究,我想要一些提示和TODOS!

這裏是我的截圖:

1)堆棧跟蹤 stacktrace

2)註釋 annotations

回答

0

你應該做的第一件事就是用泄漏儀器查找內存泄漏的根源。你的屏幕截圖來自Allocations樂器。在你的例子中,所有的93.5%都告訴你,屬性標題分配initScrollView()函數分配的內存的93.5%。它不會告訴你屬性標題屬性泄漏內存。您使用儀器的方法是正確的:切換到調用樹視圖,反轉調用樹並隱藏系統庫。對於內存泄漏,如果您使用Leaks儀器,則您的方法將更加有效。

請記住,所有的泄漏儀器都可以告訴你,你的代碼是在哪裏分配泄漏的內存。你的代碼分配泄漏內存的地方可能不是泄漏的源頭,但它是一個開始尋找的好地方。泄漏的來源將取決於您的代碼,因此教程無法告訴您代碼中泄漏的來源。

如果您正在尋找教程,Ray Wenderlich's site有一堆樂器教程。我還在我的博客上寫了一篇文章,其中介紹了我的博客上的文章,其中有幾篇文章使用儀器

Getting Started with Instruments