2011-09-23 13 views
1

我面临系统库分配的大问题。
我没有得到任何泄漏从我的应用程序仍然这么多allocations.i附加各种屏幕拍摄。在我的应用程序中使用自定义选取器,从断言库中获取所有图像。这是从选择器中选择显示滚动视图上的图像。 enter image description here如何在iphone中释放系统库分配(相关的框架)

它的屏幕截图时,我与滚动35个图像应用view.if我再次拿起从自定义选择器中分配increased.i我看到对象的详细信息及其所有相关的框架工作allocations.not从我的应用程序enter image description here 看到的影像分配对象列表响应库是DYLD。 enter image description here enter image description here 其泄漏我的屏幕截图

我们如何能释放这些分配?请帮我解决?

回答

2

只是因为你没有泄漏并不意味着你正在正确地管理内存。你所拥有的就是我所说的记忆膨胀 - 你保留的时间超过了你的需要。 (泄漏被分配的内存没有引用,Bloat被分配​​的内存有一个引用,但应该没有。)

http://www.friday.com/bbum/2010/10/17/when-is-a-leak-not-a-leak-using-heapshot-analysis-to-find-undesirable-memory-growth/会给你一些使用仪器找到它们的好策略。 (这是一个非常可靠的来源,据我所知他仍然在苹果公司工作。)

+0

这些分配是autorelease? – Srinivas

2

确保您的应用程序没有泄漏的物体,它们也会在乐器中消失。肯定它指向一个系统库,但它始终是你的错误的结果。选择其中一个并打开正确的视图。它可能会显示正确的代码堆栈和分配的代码行。
你可以做的其他事情:运行静态分析器产品 - >分析它会发现所有(至少大部分)你的泄漏;)

+0

雅即时做类似的工作,但分配会非常高,这些响应库是框架名称 – Srinivas

+0

然后放在你的autorelease池内存密集型代码,并在操作后缩小。问题是,即使调用dealloc,对象也不会被释放(不要问我为什么)。 NSAutoreleasePool将释放在池中分配的所有对象。 – 2011-10-03 08:24:06

+0

你不应该自己调用dealloc。改为发送发布(或自动发布)。 –