首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么这段代码会导致内存泄漏?

为什么这段代码会导致内存泄漏?
EN

Stack Overflow用户
提问于 2014-05-26 19:36:06
回答 1查看 130关注 0票数 0

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

代码语言:javascript
复制
- (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的定义如下:

代码语言:javascript
复制
@property (nonatomic, strong) IBOutlet UIViewController* centerController;

my AppDelegate中的IIViewDeckController属性

代码语言:javascript
复制
@property (strong, nonatomic) IIViewDeckController *viewDeckController;

我发现当我关闭并重新进入应用程序时,我有两个PushNotificationTabBarController对象,没有引用其中的一个,就像内存泄漏一样。然而,我不明白为什么这段代码会导致它,因为对我来说,它似乎是好的。我使用的是ARC

EN

回答 1

Stack Overflow用户

发布于 2014-05-26 20:00:05

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

代码语言:javascript
复制
 id controller = self.viewDeckController.centerController;
    if (controller) {
 [controller release];
  controller = nil;
}

  self.viewDeckController.centerController = pushNotificationTabBarController;
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23869196

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档