[英]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.