关于内存泄漏(屏幕截图工具包括)问题

我想铲除我申请了内存泄漏。 我现在面临的问题是,仪器的报告泄漏了,我还没有明确地分配自己的对象。 现在,我明白,这些对象可能被实例化的我已经写了一些其他代码的结果,但我无法找到我的客户端代码在堆栈的任何地方。 这里有一个屏幕截图的罪魁祸首设置该仪器是报告被泄漏对象的:

有没有人有任何建议,我怎么能去期待找出这些泄漏的真正根源,并从应用程序中删除呢?

--------------解决方案-------------

我找不到我的客户端代码在堆栈的任何地方。

这并不意味着什么。 苹果的代码可以作为定时器或用户启动的事件(水龙头等)的结果运行。 您的代码后,苹果公司的代码运行(例如,苹果公司的mouseUp:调用动作方法)。 苹果公司的代码,并不仅仅是打电话给你的代码; 因此,这并不奇怪地发现,只包含苹果的方法的堆栈跟踪。

所以,这泄漏似乎是苹果的。 你应该在雷达文件中的错误。

这适用于其他的,也是如此。 看看堆栈跟踪; 如果它没有显示出参与由你的代码(即苹果的代码只),那么你就应该提交一个bug。 如果您的代码分配它,那么它的(可能是)你的错误,所以你会发现它和解决它自己。

要添加确定性另一层这个错误,我会考虑在你的代码运行LLVM / Clang的静态分析器。 摘自他们的网站:

该LLVM / Clang的静态分析器是查找在C中的错误和Objective-C程序一个独立的工具。

更具体地讲,它可以检查ALLOC量,初始化,释放你的代码调用。 它是非常有用的。

欲了解更多信息,杰夫·拉马什上安装和使用锵静态分析,在这里写了一个梦幻般的职位。

这些看起来非常像出现在模拟器的泄漏。 如果你可以坚持你的iPhone,我敢打赌,你没有看到泄漏了。 请记住Simulator不模仿iPhone的真实环境。 确切的答案是逃跑了iPhone。 模拟器是很好的测试,但之前,你要参与到你在模拟器中看到,要确保你也看到它在iPhone上。

保险业监督€™已经看到这方面的一些帖子,似乎是一个共同的无奈点。

我有一个应用程序解析从Web服务中检索的XML文件。 它有这是由于URL缓存类似的泄漏。

我插入下面的代码泄漏调用初始化的XML解析器之前:

[[NSURLCache sharedURLCache] setMemoryCapacity:0]; [[NSURLCache sharedURLCache] setDiskCapacity:0];

请记住,你的应用程序可以在这里和那里泄漏几个字节,但是如果它不影响应用程序本身的功能,那么它可能不是一个大问题。 显然,你不想泄漏内存,如果你能帮助它,但我还没有听说过苹果拒绝人们的应用程序,由于小的内存泄漏。 很想对这个予以纠正,如果有人已经由于内存泄漏拒绝。

另一件事是检查是否内存泄漏随时间呢? 如果没有,那么泄漏200个字节不会被注意到。 我猜的一点是 - 有在当天只有这么多小时,实在是有可能在几个小时内编码/调试,你可以用10或减少应用程序的内存占用量1000倍,显示为泄露了几个字节在截图中提供。

内存占用总计是最重要的,而只有一次,如果他们不能轻易追查有时最好保留的泄漏。

--Tom

分类:iphone 时间:2015-03-15 人气:0
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.334 (s). 10 q(s)