当我在设备上运行应用程序时,不会调用NSURLRequest委托方法。它在模拟器上完美运行。在请求完成之前,我的视图加载也不是这样,因为只有在连接收到数据后才能查看加载。
我的代码请求网址在这里。任何帮助非常感谢。
- (void)viewWillAppear:(BOOL)animated
{
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://-dev01x/content"]; cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:60];
[request setHTTPMethod:@"GET"];
_getData = [[NSURLConnection alloc] initWithRequest:request delegate:self];
NSLog(@"HELLO %@",_getData);
}
答案 0 :(得分:2)
此处提供的代码毫无意义:
_getData = [[NSURLConnection alloc] initWithRequest:request delegate:self];
该行返回指向NSURLConnection对象的指针,您的变量名称具有误导性。如果你想在此时阻止(并且甚至可以工作),那么你可能需要在那时使用sendSynchronousRequest。
我做了类似于你想做的事情,但是以更传统的方式。在viewDidLoad中,甚至在initWithFrame中,我将启动一个异步连接,设置一个标志,并将视图backgroundColor设置为黑色或白色(我通常使用一个微调器)。当我获得viewWillAppear时,如果连接已经完成,一切都很好,我设置了各种UI元素。如果没有,则不要做任何事情,之后,当连接完成时,请拉下微调器并更新UI。
我能想到的唯一方法就是在你尝试阻止主线程时使用那个同步请求(恕我直言,这是一个非常糟糕的方法来解决这个问题)。
在后台做事的美妙之处在于,如果花费太长时间,用户可以点击后退按钮或去应用程序中的其他位置[在这种情况下,您取消连接并撕下所有内容。]
答案 1 :(得分:1)
在浏览器中检查时,检查提供给NSMutableURLRequest的URL
NSMutableURLRequest需要有效的网址