我的iOS应用程序有一些内存泄漏。我标记了一代,打开了一个新的VC,回到了之前的VC,并在第二个VC deinit
被叫之后标记了第二代。
仪器清楚地表明我有泄漏。但是我无法理解会发生什么。例如,在下面的图片中,方法initScrollView()
中似乎发生了泄漏,但annotations
显示93.5%
在一条线上,根据我的说法,它不会泄漏...
我正在寻找教程,但我找不到一个能让我了解最后一部分的好文章:了解什么导致泄漏。即使我知道这需要一些研究,我也希望得到一些提示和TODOS!
以下是我的截图:
答案 0 :(得分:0)
您应该做的第一件事是使用Leaks仪器来查找内存泄漏的来源。您的屏幕截图来自Allocations工具。您的示例中的所有93.5%告诉您,attributesTitle分配了initScrollView()函数分配的93.5%的内存。它没有告诉你attributesTitle属性泄漏内存。您使用Instruments的方法是正确的:切换到调用树视图,反转调用树,并隐藏系统库。对于内存泄漏,如果使用Leaks仪器,您的方法将更有效。
请记住,所有泄漏工具都可以告诉您代码分配泄漏内存的位置。您的代码分配泄漏内存的位置可能不是泄漏源,但它是一个开始查找的好地方。泄漏的来源将取决于您的代码,因此教程无法告诉您代码中泄漏的来源。
如果您正在寻找教程,Ray Wenderlich's site有一堆乐器教程。我还在我的博客上写了一篇介绍乐器的文章,其中有几篇关于使用乐器的文章