我有一个方法可以启动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
答案 0 :(得分:0)
您无法直接从该方法返回IP,而不是无论如何都不会阻止该线程,并且您无法真正做到这一点并处理身份验证问题。
您需要创建一个对象来管理它,它是连接的委托,在它处理时将连接维护为实例变量,并且具有委托或完成回调块以将IP传回一次它完成了。
您需要接受这样一个事实:连接是异步的,不想直接从方法返回IP。