ios – NSURLConnection sendSynchronousRequest似乎挂起

前端之家收集整理的这篇文章主要介绍了ios – NSURLConnection sendSynchronousRequest似乎挂起前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这个HTTP调用似乎挂起来,我看不出为什么.通话后的日志记录不会运行.

我几乎肯定会做一些非常愚蠢的事情,但如果有人能够发现它是什么,我将不胜感激.据我看到我的代码相当于文档.

我使用的URL似乎并不重要,HTTP请求从未被服务器记录(如果指向一个).

NSURLRequest *req = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com/"]];

NSURLResponse *res = nil;
NSError *err = nil;

NSLog(@"About to send req %@",req.URL);

NSData *data = [NSURLConnection sendSynchronousRequest:req returningResponse:&res error:&err];

NSLog(@"this never runs");

有任何想法吗?

更新

感谢所有发布到目前为止的人.仍然看到这个问题.一点点细节:

>代码正在设备上进行测试
>其他HTTP调用工作正常,如果它是一个网络问题,这是一个非常重要的
>代码已经超过了正常的超时时间.我知道它挂了20多分钟.那时我杀了它,但我认为它会继续挂.
>我目前没有使用委托,不打算,请看下面.
>在应用程序的其他地方我使用sendAynchronousRequest,但在这种情况下,我需要传递一个返回值(我不在主线程),所以sendSynchronousRequest是我知道的唯一选项.
>如果重要,上下文是我正在实现NSURLCache协议,特别是cachedResponseForRequest方法,这需要我返回一个NSCachedURLResponse

解决方法

后台队列中运行请求,因此不会阻止UI更新发生的主线程:
dispatch_queue_t myQueue = dispatch_queue_create("myQueue",NULL);

    // execute a task on that queue asynchronously
    dispatch_async(myQueue,^{
NSURLRequest *req = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com/"]];

NSURLResponse *res = nil;
NSError *err = nil;

NSLog(@"About to send req %@",req.URL);

NSData *data = [NSURLConnection sendSynchronousRequest:req returningResponse:&res error:&err];

    });
原文链接:https://www.f2er.com/iOS/330291.html

猜你在找的iOS相关文章