NSURLRequest委托不在模拟器上调用Device Works。

时间:2012-09-12 10:34:05

标签: iphone objective-c ios ios4 nsurlconnection

当我在设备上运行应用程序时,不会调用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);
}

2 个答案:

答案 0 :(得分:2)

此处提供的代码毫无意义:

_getData = [[NSURLConnection alloc] initWithRequest:request delegate:self];

该行返回指向NSURLConnection对象的指针,您的变量名称具有误导性。如果你想在此时阻止(并且甚至可以工作),那么你可能需要在那时使用sendSynchronousRequest。

我做了类似于你想做的事情,但是以更传统的方式。在viewDidLoad中,甚至在initWithFrame中,我将启动一个异步连接,设置一个标志,并将视图backgroundColor设置为黑色或白色(我通常使用一个微调器)。当我获得viewWillAppear时,如果连接已经完成,一切都很好,我设置了各种UI元素。如果没有,则不要做任何事情,之后,当连接完成时,请拉下微调器并更新UI。

我能想到的唯一方法就是在你尝试阻止主线程时使用那个同步请求(恕我直言,这是一个非常糟糕的方法来解决这个问题)。

在后台做事的美妙之处在于,如果花费太长时间,用户可以点击后退按钮或去应用程序中的其他位置[在这种情况下,您取消连接并撕下所有内容。]

答案 1 :(得分:1)

在浏览器中检查时,检查提供给NSMutableURLRequest的URL

enter image description here

NSMutableURLRequest需要有效的网址