Самая большая проблема с dataWithContentsOfURL:
- синхронная загрузка. Это означает, что поток блокируется до завершения загрузки. Это проблема, если соединение медленное или сервер недоступен, он блокируется до истечения времени ожидания. Если вы делаете это в главном потоке, и он блокируется дольше, чем примерно на 0,2 секунды, ваш пользователь заметит, что пользовательский интерфейс не отвечает в течение этого времени.
Почти всегда лучше выполнять асинхронную загрузку, используя NSURLConnection
, так как это не заблокирует ваш поток.
См. Руководство по программированию системы загрузки URL-адресов от Apple о том, как реализовать асинхронную загрузку. Это больше печатать, чем твой однострочный, но не сложно. Возможно, вы захотите использовать [NSURLConnection sendAsynchronousRequest: очередь: завершениеHandler:] . Если вы используете более «традиционный» connectionWithRequest:delegate:
или initWithRequest:delegate:
(как описано в ранее упомянутом руководстве), просто не реализуйте метод делегата connection:didReceiveData:
, чтобы игнорировать загруженные данные.