2015-04-01 30 views
0

我有開始的NSURLConnetion讀取一個IP地址的回報方法的IP連接沒有完成加載後:的Objective-C等到NSURLConnection的連接沒有完成加載

- (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; 
} 

的問題是客觀-c嘗試在連接尚未完成加載時返回IP地址(ipString)。我知道有一個簡單的方法來解決它,但用這種方法NSURLConnectionDelegate方法不會得到執行,我需要的方法canAuthenticateAgainstProtectionSpace方法。 P.S.希望你明白我的不好的學校英語:P

回答

0

你不能從方法中直接返回IP,不是不阻止線程,而且你也不能真正做到這一點,並處理認證問題。

您需要創建一個對象來管理這個連接的委託,在連接處理時將連接維護爲實例變量,並且具有委託或完成回調塊,以便在完成後將IP傳回。

您需要認識到連接是異步的並且不想直接從方法返回IP。

+0

好的。有沒有辦法通過處理身份驗證挑戰發出同步請求? – user3708025 2015-04-01 19:52:00

+0

僅當您可以在URL或標題中指定auth時纔可以。你不能與委託同步... – Wain 2015-04-01 19:56:13

+1

http://stackoverflow.com/q/4613067/3411191很好地解釋你的問題@ user3708025 – 2015-04-01 19:59:54

相關問題