Проблема в том, что dataWithContentsOfURL:
является блокирующим вызовом.Это означает, что он заблокирует поток, в котором он запущен.
У вас есть несколько вариантов, чтобы исправить это, и лучше всего использовать NSURLConnection
.
* 1006.* С помощью
NSURLConnection
вы можете выполнять запрос на загрузку асинхронно, что не позволит ему заблокировать основной поток.
Вы должны использовать методы NSURLConnectionDelegate
, чтобы получать информацию о ходе загрузки, сохранить ееданные и быть информированным об успехе или неудаче.
Пожалуйста, ознакомьтесь с документацией для Системы загрузки NSURL .
Альтернативой использованию NSURLConnection
является упаковка вашейтекущий код с некоторыми вызовами GCD с использованием очередей отправки.Это не позволит вызову заблокировать ваш пользовательский интерфейс, но не позволит вам определить ход выполнения - для этого вам все равно нужно будет использовать NSURLConnection
.