我使用MBProgressHUB
作为加载指示器。我注意到通过Instruments,使用MBProgressHUB
时有很多内存泄漏(每次启动时大约3MB。问题是,当视图卸载时,内存不清除 )即可。
项目已启用ARC
这就是我在MBProgressHUB
中ViewDidLoad
的启动方式(HUD也是保留属性)
HUD = [[MBProgressHUD alloc] initWithView:[(AppDelegate *)[[UIApplication sharedApplication] delegate] window]];
[[(AppDelegate *)[[UIApplication sharedApplication] delegate] window] addSubview:HUD];
HUD.delegate = self;
同样在ViewDidUnload
我正在设置HUD = nil;
任何想法???
答案 0 :(得分:4)
您正在将您的hud添加到窗口作为子视图。窗口会在您的应用程序运行时将其保存在子视图中。
当你不需要它时,你应该调用[HUD removeFromSuperview]方法或者将属性HUD.removeFromSuperViewOnHide设置为YES - 所以如果不将其保留在其他位置,它将隐藏并释放内存。
如果您将其添加到控制器的视图中 - 它将在控制器的生命周期结束时以其视图取消分配。
答案 1 :(得分:1)
我设法通过在AppDelegate中初始化MBProgressHUB一次来解决问题。并且只在其他地方使用参考
答案 2 :(得分:0)
我是用非ARC项目做的。
我找到了一个只改变- (id)initWithView:(UIView *)view {
方法的解决方案。它返回me
,我将其更改为返回[me autorelease]
此致