objective-c - 导航 Controller 和泄漏

标签 objective-c ios

我使用了 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];
}

最佳答案

navControllercalcController 都在程序的生命周期中存在。当程序终止时,所有内容都被清除,所以没关系。你确实有一个泄漏,但是一个无关紧要的泄漏。

关于objective-c - 导航 Controller 和泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6448040/

相关文章:

objective-c - CGContextRef到底是什么?

php - ASIFormDataRequest + PHP 问题

objective-c - Info.plist 上传错误中的 CFBundleVersion

iphone - 以编程方式更改 UIView 方向而不使用 shouldAutorotateToInterfaceOrientation

objective-c - Objective-C 对象是按值传递还是按引用传递?

android - 如果用户关闭位置服务,应用程序是否仍然可以访问 token ?

ios - Pushwoosh PhoneGap 通知仅发送给部分订阅者

ios - 找到要上传到的最快的 S3 存储桶

ios - LGSideMenuBar 背景颜色变化

c# - Xamarin iOS 调试需要永远,不加载模拟器