从堆栈弹出时,ARC UIViewController不被解除分配

时间:2013-02-20 19:31:40

标签: objective-c automatic-ref-counting

我有一个基于导航的应用程序,我在我的应用程序中使用疯狂的MBProgressHud。当它出现时我转换为ARC,我经历了很多应用程序崩溃,我无法理解为什么。我开始使用分析仪工具,看到我的记忆消耗是通过屋顶。我进入了所有的视图控制器并重载了他们的dealloc方法,包括写出NSLog来告诉我它们是否被释放。令我惊讶的是,没有使用MBProgressHUD的ViewControllers被解除分配。

我这样叫MBProgressHUD:

HUD = [[MBProgressHUD alloc] initWithView:self.navigationController.view];
[self.navigationController.view addSubview:HUD];
HUD.delegate = self;
HUD.labelText = @"Retrieving Signature";
[HUD showWhileExecuting:@selector(getSignature) onTarget:self withObject:nil animated:YES];

1 个答案:

答案 0 :(得分:2)

完成MBProgressHUD后,你需要通过将委托设置为Nil来清理HUD,从superview中移除并最终将HUD设置为nil。

HUD.delegate = nil;
[HUD removeFromSuperview];
HUD=nil;