仪器 - 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;
}
我不知道为什么会发生泄漏,我在释放dealloc
viewController
。第二泄漏发生在我的表视图控制器之一,这部分代码:
EditLocationViewController *locationController = [[EditLocationViewController alloc] initWithLocation:self.location];
[self.navigationController pushViewController:locationController animated:YES]; // <--- it leaks on this line
[locationController release];
我通过EditLocationViewController
班去,并确保所有保留的属性被释放,等等。所以我不能看它会泄漏的原因。
要么我在这里丢失东西,要么仪器报告误报。
答
是什么让你觉得它泄漏?我的猜测是视图本身在两种情况下都被泄露(属于您可见的控制器的视图),或者作为视图控制器-loadView
或-viewDidLoad
的一部分加载的辅助视图之一(这包括从笔尖并连接到视图控制器中的插座)。
如果您在您的ivars上使用IBOutlet
声明,情况可能很好,因为这些ivars将被视图控制器保留。在这种情况下,您需要在-viewDidUnload
以及-dealloc
中发布它们(请务必在-viewDidUnload
中释放它们之后将其清除,否则下次访问它们时会崩溃)。
它可能是一个误报,你可以运行通过dealloc,仍然看到它报告泄漏? – 2010-07-15 19:13:34
什么东西被泄漏,保留和释放对象的历史是什么(仪器可以告诉你们两个)? – bbum 2010-07-15 19:34:41