格尔茨,
我目前在mainViewController上管理“加载”屏幕时遇到问题(用户访问的第一个视图。)所以基本上第一个视图下载图像并将其放在UIImageView上。发生这种情况时,会显示MBProgressHUD。然后,用户使用自己的控制器转到第二个View。用户上传图像并返回。当用户返回mainView时,将重新加载mainView,因此不会显示与之前相同的图像。从逻辑上讲,“加载”MBProgressHUD也应该显示出来。尽管如此,它甚至可以让它显示之前崩溃,它在转换过程中崩溃。
事情是错误exc_bad_access只有在我实现MBProgressHUD时才会出现(必须是内存管理的问题,但我似乎没有得到它......)这些是带有相关代码的段:
mainViewController.m
- (void)viewDidLoad {
HUD = [[MBProgressHUD alloc] initWithView:self.view];
[self.view addSubview:HUD];
HUD.delegate = self;
HUD.labelText = @"Please Wait";
[HUD showWhileExecuting:@selector(loadingOfImageAndInformation) onTarget:self withObject:nil animated:YES];
[super viewDidLoad];
}
- (void) loadingOfImageAndInformation {
// [...] get URL and blabla.
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:imageURL];
[request setDelegate:self];
[request setDidFinishSelector:@selector(requestLoadDone:)];
[request setDidFailSelector:@selector(requestLoadWentWrong:)];
[request setDownloadProgressDelegate:HUD];
[request startAsynchronous];
}
- (void)hudWasHidden {
// Remove HUD from screen when the HUD was hidded
[HUD removeFromSuperview];
[HUD release];
// HUD = nil; I tried this because I found it on another
// answer in S.O. but it didn't quite work.
// I don't think it is the same case.
// I also tried putting this on the dealloc method and
// the didReceiveMemoryWarning to no avail...
}
这是另一个question处理类似问题,但并没有解决我的问题。
非常感谢您将来的帮助!!
答案 0 :(得分:2)
对不起,我还没看完整个问题。通常当你得到EXC_BAD_ACCESS时,很容易弄明白你是否启用了NSZombie。如果它没有帮助发表评论,我会看看我是否可以改进我的答案。
要激活NSZombie,请执行以下操作:
名称:NSZombieEnabled 价值:是
然后像往常一样运行您的应用程序,当它崩溃时,它应该告诉您哪个已解除分配的对象收到了释放消息。
答案 1 :(得分:0)
您将HUD
设置为request
的downloadProgressDelegate。在您发布request
后,HUD
可能会尝试向其发送消息。如果你在调试器中运行你的代码,你在崩溃时得到的堆栈跟踪应该告诉你是否是这种情况。