target-c дождаться окончания загрузки соединения NSURLConnection

У меня есть метод, который запускает 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;
}

Проблема в том, что target-c пытается вернуть IP-адрес (ipString), когда соединение еще не завершило загрузку. Я знаю, что есть простой способ исправить это, но с этим способом методы NSURLConnectionDelegate не выполняются, и мне нужноdidReceiveAuthenticationChallenge Метод canAuthenticateAgainstProtectionSpace метод. PS надеюсь ты понимаешь мой плохой школьный английский:P

1 ответ

Решение

Вы не можете вернуть IP напрямую из метода, не блокируя поток в любом случае, и вы не можете сделать это и решить проблемы с аутентификацией.

Вам нужно создать объект для управления этим, который является делегатом для соединения, поддерживает соединение как переменную экземпляра во время его обработки и имеет делегат или блок обратного вызова завершения, чтобы передать IP обратно, как только это будет сделано.

Вы должны принять тот факт, что соединение является асинхронным и не хотите возвращать IP-адрес метода напрямую.

Другие вопросы по тегам