繁体   English   中英

为什么此代码会导致内存泄漏?

[英]Why does this code cause a memory leak?

我在applicationDidBecomeActive回调中执行此代码。

- (void)applicationDidBecomeActive:(UIApplication *)application{
     [self showMainWindow];
}


- (void) showMainWindow{
      PushNotificationTabBarController *pushNotificationTabBarController = [[PushNotificationTabBarController alloc] initWithNibName:@"PushNotificationTabBarController" bundle:nil];
      self.viewDeckController.centerController = 
          pushNotificationTabBarController; // registered for Notification via addObserver...
}

setter的定义如下:

@property (nonatomic, strong) IBOutlet UIViewController* centerController;

我的AppDelegate IIViewDeckController属性:

@property (strong, nonatomic) IIViewDeckController *viewDeckController;

我发现当我关闭并重新进入应用程序时,我有2个PushNotificationTabBarController对象,没有对其中之一的引用,例如内存泄漏。 但是我不明白为什么这段代码会导致它,因为对我来说似乎还可以。 我正在使用ARC

在设置pushNotificationTabBarController之前,请检查self.viewDeckController.centerController对象。 如果存在,则释放并分配给nil并分配'pushNotificationTabBarController'的新对象

 id controller = self.viewDeckController.centerController;
    if (controller) {
 [controller release];
  controller = nil;
}

  self.viewDeckController.centerController = pushNotificationTabBarController;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM