我想在这里找到代码:
http://snipplr.com/view/26643/mbprogresshud-with-an-asynchronous-nsurlconnection-call/
在我的项目中工作。它正在使用私有MBProgressHUD类,但是我继续在第69或70行获取exc_bad_access错误,具体取决于您是否注释掉日志语句:
NSLog(@“float filesize:%f”,[self.searchResultFileSize floatValue]); HUD.progress = [resourceLength floatValue] / [self.searchResultFileSize floatValue];
问题在于searchResultFileSize转换为floatValue,虽然我无法弄清楚原因。调用同一个变量一行
NSLog(@“filesize:%d”,self.searchResultFileSize);
工作正常。我想出的唯一想法是它可能是一些线程问题?
任何想法?或者有没有人有一个如何使用MBProgressHUD与异步NSURLConnections一起工作的例子?
P.S。我尝试使用原始MBProgressHUD代码,该代码指定了如下调用:
[HUD showWhileExecuting:@selector(myProgressTask)onTarget:self withObject:nil animated:YES];
然而这不起作用,因为myProgressTask使用NSURLConnection,它使用委托,因此上面的代码将执行方法调用myProgressTask,然后在响应返回之前隐藏自己。
答案 0 :(得分:0)
当你这样做时
NSLog(@"filesize: %d", self.searchResultFileSize);
你打印出一个指向NSNumber的指针的整数值,我认为(第53行将指向NSNumber的指针分配给searchResultFileSize)。在第53行,返回并分配给searchResultFileSize的NSNumber是自动释放的 - 它看起来好像它可能在那里和当你尝试在第69行访问它时被释放。即使它被dealloc'd,它仍然会有指针的整数值,所以
NSLog(@"filesize: %d", self.searchResultFileSize);
将起作用,但任何尝试调用它应该指向的NSNumber实例的方法都将失败,并使用exc_bad_access。但是,如果没有看到接口定义,特别是在定义了searchResultFileSize的地方,我无法确定。