将MBProgressHUD与异步NSURLConnection一起使用?

时间:2010-04-13 17:15:27

标签: iphone objective-c

我想在这里找到代码:

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,然后在响应返回之前隐藏自己。

1 个答案:

答案 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的地方,我无法确定。