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

objective-c wait until NSURLConnection connection did finish loading

我有一个方法可以在连接完成加载后启动 NSURLConnetion 来读取 IP 地址和 return 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 在连接尚未完成加载时尝试 return IP 地址 (ipString)。我知道有一种简单的方法可以修复它,但是通过这种方式,NSURLConnectionDelegate 方法不会被执行,我需要 didReceiveAuthenticationChallenge 方法和 canAuthenticateAgainstProtectionSpace 方法。 P.S。希望你能理解我糟糕的学校英语:P

您不能 return 直接从该方法获取 IP,无论如何都不能不阻塞线程,而且您不能真正做到这一点并处理身份验证问题。

您需要创建一个对象来管理它,它是连接的委托,在处理过程中将连接作为实例变量维护,并有一个委托或完成回调块以在完成后将 IP 传回.

您需要接受连接是异步的这一事实,并且不想 return 直接从该方法获取 IP。