2010-09-28 98 views
1

为了尝试内存泄漏仪器工具,我创建了一个基于视图的ipad应用程序。这很简单。我创建一个默认的基于视图的应用程序。在视图控制器的的loadView,我说iphone/ipad内存泄漏仪器工具

// 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完成后,创建的视图是泄漏的权利?

我用内存泄漏仪器工具来检查,它根本没有泄漏。

任何人都可以解释它为什么?

感谢

+0

+1我不明白内存泄漏工具...:/ – 2010-09-28 09:33:42

+0

是的,希望有人会帮助。我阅读了很多关于该工具的内容。但任何人都可以解释我上面的例子? – Jack 2010-09-28 09:36:24

回答

0

的泄漏工具 - 命令行或所述分配仪器 - 报告一个泄漏作为通过任何不再引用的对象。但问题在于,即使该内存永远不会再被读取,指向该对象的零散指针仍然可能位于内存中。

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

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

你说得对,因为上述代码片段会导致UIView实例泄漏。如果你是build and analyze,我预计Xcode会识别这个问题。