使用NSData时如何处理连接问题?

时间:2011-03-23 06:43:30

标签: objective-c cocoa nsdata nsurl

NSXMLParser的一个init方法是initWithData:(NSData * data)。 当我像这样初始化NSData时,

NSURL *url = [NSURL URLWithString:@"http://221.34.21.9"];
NSData *date = [[NSData alloc] initWithContentsOfURL:url];

如果无法访问IP地址, 我的应用程序将永远等待该地址的响应。

我该如何解决这个问题?

谢谢!

2 个答案:

答案 0 :(得分:2)

您必须通过NSURLConnection获取数据,该数据将具有超时值,如URL Loading System Programming Guide中所述。这应该给你一个提示;该指南有更完整的示例代码:

// Create an NSURLRequest object with your desired URL and timeout value
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://221.34.21.9"]
                          cachePolicy:NSURLRequestUseProtocolCachePolicy
                      timeoutInterval:15.0];
// Begin a connection using that request
// Assign a delegate object that will get callbacks when things happen
NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];

代理方法在NSURLConnection Class Reference中描述了您可能对connection:didRecieveDataconnection:didFailWithError:

最感兴趣

答案 1 :(得分:0)

您需要从Apple Reaceability example实施Internet Reacheability。 这是一个测试,可以让您知道您的互联网连接是否可以访问。