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。
我有一个方法可以在连接完成加载后启动 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。