Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/100.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在iPhone项目中准确查找内存泄漏的位置_Iphone_Ios_Ios4_Iphone Sdk 3.0 - Fatal编程技术网

如何在iPhone项目中准确查找内存泄漏的位置

如何在iPhone项目中准确查找内存泄漏的位置,iphone,ios,ios4,iphone-sdk-3.0,Iphone,Ios,Ios4,Iphone Sdk 3.0,在Xcode中开发应用程序时,内存泄漏正在发生。当我在扩展细节视图中检查它们时,它们显示了与实现无关的不同方法。如何准确地找出哪个对象正在泄漏以及它在哪里泄漏内存 启用ARC时,我们是否必须处理内存泄漏问题?是的,即使使用ARC,也存在内存泄漏问题。ARC不是垃圾收集器,它只在编译时为您插入、保留、释放和自动释放关键位置。因此,尽管它确实对开发人员有所帮助,但您应该知道内存泄漏仍然存在(例如循环引用)。您可以从使用静态分析器开始并纠正它显示的任何问题。然后,您可以转到仪器并选择泄漏即使在ARC中

在Xcode中开发应用程序时,内存泄漏正在发生。当我在扩展细节视图中检查它们时,它们显示了与实现无关的不同方法。如何准确地找出哪个对象正在泄漏以及它在哪里泄漏内存


启用ARC时,我们是否必须处理内存泄漏问题?

是的,即使使用ARC,也存在内存泄漏问题。ARC不是垃圾收集器,它只在编译时为您插入、保留、释放和自动释放关键位置。因此,尽管它确实对开发人员有所帮助,但您应该知道内存泄漏仍然存在(例如循环引用)。您可以从使用静态分析器开始并纠正它显示的任何问题。然后,您可以转到仪器并选择泄漏

即使在
ARC
中也可能发生内存泄漏,它只是在编译时插入释放和自动释放

1。您必须使用XCode中的
Build and analysis
检查泄漏,
shift+command+b
您应该清除这些问题

2。之后,您可以使用配置文件选项
command+i
开始使用仪器。这将为您指出泄漏的位置

这个链接也会帮助你

编辑:添加了一些屏幕截图,希望能把它弄清楚

在选择
leaks
后进行分析期间,选择
call tree
选项并选中
隐藏系统库
反转调用树
仅显示obj-c
框,如下图所示

双击下面的符号名称后,将得到泄漏的行。

你会得到这样的东西


当然,您仍然需要手动管理非objective-c对象(c或c++)的内存。还有一个方面是忘记了使运行循环中的重复计时器或其他保留对象无效(不是明显的泄漏)。@JackyBoy:你能告诉我内存泄漏不由ARC处理的确切位置吗?举个例子。@MadanMohan retain cycles。只是一个小问题,它不会“告诉你泄漏的确切位置”,你可能会幸运地告诉你,但通常它会指出泄漏的位置。一切都很好。但是当我看到扩展细节视图时,该视图中的方法与项目中的任何方法都不匹配methods@SAHARA,你有没有试着阅读教程?红色通常指向泄漏的物体。您可以通过双击代码中的这一行来查看它。但当我双击它时…它正在打开地址,而不是泄漏代码中的这一行project@SAHARA,请检查我的编辑,希望它能使事情更清楚。