【问题标题】:Using MBProgressHUD with asynchronous NSURLConnection?将 MBProgressHUD 与异步 NSURLConnection 一起使用?
【发布时间】:2010-04-13 17:15:27
【问题描述】:

我正在尝试获取此处的代码:

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 一起使用的工作示例?

附:我尝试使用原始的 MBProgressHUD 代码,它指定了如下调用:

[HUD showWhileExecuting:@selector(myProgressTask) onTarget:self withObject:nil animated:YES];

但这不起作用,因为 myProgressTask 使用了一个使用委托的 NSURLConnection,因此上面的代码将执行对 myProgressTask 的方法调用,然后在响应返回之前隐藏自身。

【问题讨论】:

    标签: iphone objective-c


    【解决方案1】:

    当你这样做时

    NSLog(@"filesize: %d", self.searchResultFileSize);
    

    您正在打印出指向 NSNumber 的指针的整数值,我认为(第 53 行将指向 NSNumber 的指针分配给 searchResultFileSize)。在第 53 行,返回并分配给 searchResultFileSize 的 NSNumber 是自动释放的——在我看来,它可能在那里和当您尝试在第 69 行访问它时被释放。即使它被释放,它指针仍然会有一个整数值,所以

    NSLog(@"filesize: %d", self.searchResultFileSize);
    

    会起作用,但是任何尝试调用它应该指向的 NSNumber 实例的方法的尝试都将失败并显示 exc_bad_access。但是,如果没有看到接口定义,尤其是定义了 searchResultFileSize 的地方,我无法确定。

    【讨论】:

    • 我应该提到:如果您使用的是 10.6,Xcode 在构建菜单中有一个“构建和分析”选项,通常有助于突出保留/释放/内存管理问题。跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多