iOS NSURLConnection无连接

时间:2012-10-14 21:32:50

标签: iphone ios nsurlconnection

我看到了一些像这样的代码:

NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:urlRequest delegate:self];

if(connection) {
    receivedData = [NSMutableData data];
} else {

}

如何让它进入其他?我试过禁用连接但仍然没有进入其通过didFailWithError的其他...所以想知道它是否甚至是必要的??

2 个答案:

答案 0 :(得分:1)

关于此方法返回值的Apple文档说:

  

返回值

     

网址请求的网址连接。如果a,则返回nil   连接无法初始化。

对于那些不熟悉Cocoa(和Objective-C)最佳实践的人来说,这可能会产生误导。

通常init方法应该返回一个对象;除非有一些根本原因返回一个物体将是危险的。大多数其他语言通过抛出异常处理这样的情况,要求你添加无数的try / catch括号。

如果(例如)您传递initWithRequest:delegate:作为请求参数,则nil方法将返回nil;并且有充分的理由。为什么创建连接对象没有用处?

然而,让我们考虑一下飞机模式或无效网址等情况。如果initWithRequest:delegate:刚刚返回nil那么你怎么知道出了什么问题?允许连接调用connection:didFailWithError:使您有机会通过错误参数深入了解特定的失败。

解决关于是否有必要处理连接事件nil的问题:这取决于。如果连接无法初始化,它将永远不会调用连接委托方法,因此如果您的代码依赖于这些回调来发出后续请求,那么是的,这是必要的。

附注:在此处创建NSMutableData还为时过早,因为您还不知道存在有效连接。 An answer I gave here gave some very basic sample code regarding where to do this.

答案 1 :(得分:0)

您可以在代码的其他部分显示“未找到数据”的提醒          UIAlertView * thealert = [[UIAlertView alloc] initWithTitle:@“Error”消息:@“未找到数据。” delegate:self cancelButtonTitle:@“Ok”otherButtonTitles:nil];         [thealert show];         [thealert release];