仪器 - iPad应用程序泄漏

问题描述:

我的iPad应用程序运行仪器发现2泄漏,除非我不明白它们来自哪里。第一个是在这个方法在我的应用程序委托:仪器 - iPad应用程序泄漏

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  

    [window addSubview:self.viewController.view]; // <--- it leaks on this line 
    [window makeKeyAndVisible]; 
    return YES; 
} 

我不知道为什么会发生泄漏,我在释放deallocviewController。第二泄漏发生在我的表视图控制器之一,这部分代码:

EditLocationViewController *locationController = [[EditLocationViewController alloc] initWithLocation:self.location]; 
     [self.navigationController pushViewController:locationController animated:YES]; // <--- it leaks on this line 
     [locationController release]; 

我通过EditLocationViewController班去,并确保所有保留的属性被释放,等等。所以我不能看它会泄漏的原因。

要么我在这里丢失东西,要么仪器报告误报。

+0

它可能是一个误报,你可以运行通过dealloc,仍然看到它报告泄漏? – 2010-07-15 19:13:34

+0

什么东西被泄漏,保留和释放对象的历史是什么(仪器可以告诉你们两个)? – bbum 2010-07-15 19:34:41

是什么让你觉得它泄漏?我的猜测是视图本身在两种情况下都被泄露(属于您可见的控制器的视图),或者作为视图控制器-loadView-viewDidLoad的一部分加载的辅助视图之一(这包括从笔尖并连接到视图控制器中的插座)。

如果您在您的ivars上使用IBOutlet声明,情况可能很好,因为这些ivars将被视图控制器保留。在这种情况下,您需要在-viewDidUnload以及-dealloc中发布它们(请务必在-viewDidUnload中释放它们之后将其清除,否则下次访问它们时会崩溃)。