2017-08-17 73 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