使用MBProgressHUD时内存泄漏

时间:2014-03-26 10:46:12

标签: ios iphone objective-c memory-leaks mbprogresshud

我使用MBProgressHUB作为加载指示器。我注意到通过Instruments,使用MBProgressHUB 时有很多内存泄漏(每次启动时大约3MB。问题是,当视图卸载时,内存不清除即可。

项目已启用ARC

这就是我在MBProgressHUBViewDidLoad的启动方式(HUD也是保留属性)

HUD = [[MBProgressHUD alloc] initWithView:[(AppDelegate *)[[UIApplication sharedApplication]     delegate] window]];
[[(AppDelegate *)[[UIApplication sharedApplication] delegate] window] addSubview:HUD];
HUD.delegate = self;

同样在ViewDidUnload我正在设置HUD = nil;

任何想法???

3 个答案:

答案 0 :(得分:4)

您正在将您的hud添加到窗口作为子视图。窗口会在您的应用程序运行时将其保存在子视图中。

当你不需要它时,你应该调用[HUD removeFromSuperview]方法或者将属性HUD.removeFromSuperViewOnHide设置为YES - 所以如果不将其保留在其他位置,它将隐藏并释放内存。

如果您将其添加到控制器的视图中 - 它将在控制器的生命周期结束时以其视图取消分配。

答案 1 :(得分:1)

我设法通过在AppDelegate中初始化MBProgressHUB一次来解决问题。并且只在其他地方使用参考

答案 2 :(得分:0)

我是用非ARC项目做的。

我找到了一个只改变- (id)initWithView:(UIView *)view {方法的解决方案。它返回me,我将其更改为返回[me autorelease]

此致