objective-c等到NSURLConnection连接完成加载

时间:2015-04-01 19:41:58

标签: ios objective-c nsurlconnection nsurlconnectiondelegate

我有一个方法可以启动NSURLConnetion来读取IP地址,并在连接完成加载后返回IP:

- (NSString *)getHansIP
{
   self.returnData = [[NSMutableData alloc] init];
   NSMutableURLRequest *getIpRequest = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:@"https://example.com"]];
   [getIpRequest setHTTPMethod:@"GET"];
   NSURLConnection *ipconn = [NSURLConnection connectionWithRequest:getIpRequest delegate:self];
   [ipconn start];
   return self.ipString;
}

问题是,当连接尚未完成加载时,objective-c尝试返回IP地址(ipString)。我知道有一种简单的方法可以修复它,但是这样NSURLConnectionDelegate方法不会被执行,我需要didReceiveAuthenticationChallenge方法和canAuthenticateAgainstProtectionSpace方法。 附:希望你能理解我的坏学校英语:P

1 个答案:

答案 0 :(得分:0)

您无法直接从该方法返回IP,而不是无论如何都不会阻止该线程,并且您无法真正做到这一点并处理身份验证问题。

您需要创建一个对象来管理它,它是连接的委托,在它处理时将连接维护为实例变量,并且具有委托或完成回调块以将IP传回一次它完成了。

您需要接受这样一个事实:连接是异步的,不想直接从方法返回IP。

相关问题