Недостатком использования +stringWithContentsOfURL:
в основном потоке является то, что ваш пользовательский интерфейс будет блокироваться, пока запрос активен.Это становится особенно проблематичным, когда пользователь находится в сети с высокой задержкой, когда сервер медленно отвечает, или если запрос заканчивается тайм-аутом.В последнем случае пользователь может видеть блок пользовательского интерфейса в течение очень долгого времени.
В методе +stringWithContentsOfURL:
также отсутствует способ предоставить вам информацию об ошибке в случае, если сервер не возвращает статус 200.
Чтобы выполнить запрос асинхронно, не блокируя пользовательский интерфейс, используйте NSURLConnection
и захватите данные в делегате:
- ( void )connection: (NSURLConnection *)connection didReceiveData: (NSData *)data
{
// receivedData is an NSMutableData object
[ receivedData appendData: data ];
}
И затем начните синтаксический анализ после завершения соединения:
- ( void )connectionDidFinishLoading: (NSURLConnection *)connection
{
[ self parseHTMLData: receivedData ];
}
Руководство по программированию системы загрузки URL поможет вам начать работу.