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



我有一个方法,它启动NSURLConnection来读取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

您不能直接从方法返回IP,也不能在不阻塞线程的情况下直接返回,而且您也不能真正做到这一点并处理身份验证问题。

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

您需要接受这样一个事实,即连接是异步的,并且不希望直接从方法返回IP。

相关内容

最新更新