【发布时间】:2010-09-04 13:55:24
【问题描述】:
我刚刚使用 Instrument 在运行 iOS 3.1.2 的 iPhone 3G 上检查我的应用程序中的内存泄漏。我发现 Instruments 中显示了几个泄漏。 Instruments 输出如下:
Leaked Object # Address Size Responsible Library Responsible Frame
GeneralBlock-16 2 < multiple > 32 UIKit -[UIViewAnimationState animationDidStart:]
GeneralBlock-16 2 < multiple > 32 UIKit -[UIViewAnimationState animationDidStart:]
GeneralBlock-16 0x163be0 16 UIKit -[UITransitionView _didStartTransition]
GeneralBlock-16 0x160730 16 UIKit -[UITableView(UITableViewInternal) _sectionHeaderViewWithFrame:forSectionpaque:reus eViewIfPossible:]
GeneralBlock-16 0x157060 16 UIKit -[UIScrollView(Static) _startTimer:]
GeneralBlock-16 0x148480 16 UIKit -[UIScrollView _endPanWithEvent:]
GeneralBlock-16 0x13d570 16 UIKit -[UINavigationBar pushNavigationItem:]
GeneralBlock-16 0x13c8b0 16 UIKit -[UIScrollView _updatePanWithStartDelta:event:gesture:ignoringDir ectionalScroll:]
GeneralBlock-16 0x132240 16 UIKit -[UINavigationTransitionView transition:fromView:toView:]
GeneralBlock-16 0x126ec0 16 UIKit -[UINavigationBar popNavigationItem]
GeneralBlock-16 0x11ad50 16 UIKit -[UITableViewCell _saveOpaqueViewState:]
因为大部分泄露的对象来自 UIKit(Instruments 报告的负责库),我不确定是否需要清除它们,或者它是否会有所作为。泄漏是一个严重的问题吗?如果我必须修复它们,我该怎么做?我找不到踪迹,因为负责的图书馆不是我的。
【问题讨论】:
-
对不起,由于我无法上传屏幕截图,以上仪器输出为质量。我只是想解释一下泄漏对象来自 UIKit。我无法在我的应用中找到准确的代码行。
-
你是否也开启了僵尸仪器?
-
@rano,我在参数中将“NSZombieEnabled”添加到 YES,但它似乎仍然相同。我还需要什么?谢谢。
-
您不得启用 nszombie,因为解除分配的对象将被视为内存泄漏
标签: iphone memory-leaks