【问题标题】:NSURLConnection sendAsynchronousRequest in static library crashes on simulator静态库中的 NSURLConnection sendAsynchronousRequest 在模拟器上崩溃
【发布时间】:2015-01-21 01:53:32
【问题描述】:

我正在编译一个包含以下内容的静态库(FAT 二进制文件):

    NSURL *url = [NSURL URLWithString:urlString];
    NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url];
    NSOperationQueue *queue = [[NSOperationQueue alloc] init]; // also tried [NSOperationQueue mainQueue]
    [NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
        // CRASH BEFORE BLOCK EXECUTES
        NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response;
        ...

如果在设备和模拟器上使用应用程序编译,代码本身运行良好,但仅在模拟器上用作另一个应用程序中的静态库时会崩溃。静态库在 iOS 设备上运行良好。崩溃是EXC_BAD_ACCESS,通过进行一些日志记录,我将其缩小到sendAsynchronousRequest。该块不会被调用。

知道可能出了什么问题吗?

【问题讨论】:

    标签: ios iphone nsurlconnection static-libraries objective-c-blocks


    【解决方案1】:

    您创建自己的队列是否有原因?尝试使用[NSOperationQueue mainQueue] 作为队列

    【讨论】:

    • 嗯,对不起。其余的看起来是正确的,一定是其他地方的问题。如果可以的话,也许尝试使用 NSURLSession 看看问题是否消失?
    • 只是好奇为什么不呢?根据我的经验,NSURLSession 似乎比 NSURLConnection 做得更好
    • 很抱歉,我从这个项目中被拉出来从事其他工作,最近又回来了。原因是我必须支持iOS 6,否则我会使用它。
    【解决方案2】:

    我可以改用NSURLConnectionDelegate 方法来修复它。我仍然很想知道它为什么会崩溃,如果您有任何想法,请发表评论。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-18
      • 1970-01-01
      • 1970-01-01
      • 2020-03-25
      • 2013-01-04
      • 2012-11-06
      • 1970-01-01
      • 2012-05-18
      相关资源
      最近更新 更多