我使用了 Instruments 工具,它告诉我没有内存泄漏。但我正在努力理解其背后的逻辑。这怎么就不会漏了呢?似乎幕后发生了一些魔法,我的 AppDelegate 正在使用我分配的 navController 来设置 self.navigationController 的属性。如果没有我在这里的初始化,我的属性为零。 难道我不应该被迫创建委托(delegate)的这些实例变量,然后在 dealloc 中释放它们吗?为什么这不是泄漏?或者我使用仪器工具错误?
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// two alloc calls which would imply I need a release
UINavigationController *navController = [[UINavigationController alloc] init];
UIViewController *calcController = [[CalculatorViewController alloc] init];
[navController pushViewController:calcController animated:YES];
[window addSubview:navController.view];
[window makeKeyAndVisible];
// can not release here, if i do, no views show up
// [navController release];
// [calcController release];
return YES;
}
...
// NOTE: No dealloc for navController or calcController
- (void)dealloc {
[window release];
[super dealloc];
}
最佳答案
navController
和 calcController
都在程序的生命周期中存在。当程序终止时,所有内容都被清除,所以没关系。你确实有一个泄漏,但是一个无关紧要的泄漏。
关于objective-c - 导航 Controller 和泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6448040/