iphone/ipad 内存泄漏仪器工具

Posted

技术标签:

【中文标题】iphone/ipad 内存泄漏仪器工具【英文标题】:iphone/ipad memory leaks instrument tool 【发布时间】:2010-09-28 09:27:40 【问题描述】:

为了尝试内存泄漏检测工具,我创建了一个基于视图的 ipad 应用程序。这很简单。我创建了一个默认的基于视图的应用程序。在ViewController的loadView中,我说

// Implement loadView to create a view hierarchy programmatically, without using a nib.
- (void)loadView 

    [super loadView];

    UIView *view = [[UIView alloc] init];
    view.frame = CGRectMake(0, 0, 768, 1004);
    view.backgroundColor = [UIColor redColor];
    [self.view addSubview:view];
    [view removeFromSuperview];

所以,我在 loadView 中创建了一个视图,然后将其添加到根视图,然后将其删除。

但是视图是在方法中创建的,我从不释放它。

所以我认为在 loadView 完成后,创建的视图会泄露吗?

我使用内存泄漏工具检查,它报告根本没有泄漏。

谁能解释一下为什么?

谢谢

【问题讨论】:

+1 我也不懂内存泄漏工具... :/ 是的,希望有人能提供帮助。我阅读了很多关于该工具的信息。但是任何人都可以解释我上面的例子吗? 【参考方案1】:

泄漏工具(命令行或分配工具)将泄漏报告为不再被任何对象引用的对象。但问题是,指向对象的杂散指针可能仍然在内存中的某个地方,即使该内存永远不会被再次读取。

即泄漏仪器不是 100% 准确的,它努力不给出误报(这更麻烦)。

我通常使用分配工具,查看在任何给定时间“活跃”的对象列表,并在心理上证明它们的存在。

您说得对,因为上述代码 sn-p 将导致 UIView 实例泄漏。如果你是build and analyze,我希望 Xcode 会发现问题。

【讨论】:

以上是关于iphone/ipad 内存泄漏仪器工具的主要内容,如果未能解决你的问题,请参考以下文章

重新仪器“内存泄漏”分析,其他工具是不是提供更多信息以找到泄漏的根本原因?

使用仪器检查 xcode 4 中的内存泄漏

分析仪结果与仪器泄漏:iPhone 内存泄漏

仪器报告内存泄漏。不明白为啥

仪器中存在内存泄漏的类

如何解决 xcode(仪器)中的 iPhone 应用程序内存泄漏