2010-09-28 132 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會識別這個問題。