Прежде всего, имейте в виду, что dataWithContentsOfURL:
является блокирующим API и, если он используется в основном потоке, приведет к зависанию вашего приложения до его завершения. Если вы используете этот код на медленном соединении, таком как 3G или EDGE, ваше приложение будет не отвечать до тех пор, пока изображение не загрузится - вы этого не хотите.
Вместо этого следует рассмотреть один из следующих вариантов:
- Использование
NSURLConnection
и его делегированных методов для загрузки данных изображения, создания объекта изображения и обновления пользовательского интерфейса после его завершения
- Используйте блоки, чтобы обернуть ваш звонок в
dataWithContentsOfURL:
и отправить его в асинхронную очередь
- Выполните эту работу в отдельном потоке (не рекомендуется, так как предыдущие два варианта дают тот же эффект с меньшим количеством кода).
Все это для другого вопроса. Что касается вашего фактического вопроса, вы можете проверить, является ли возвращенный объект данных действительным. Документы утверждают, что этот метод возвращает ноль, если объект данных не может быть создан.
Если вы хотите узнать причину, по которой произошел сбой, вы должны использовать dataWithContentsOfURL:options:error:
и передать указатель ошибки, который можно проверить в случае сбоя.
Однако, как я уже сказал, если вы используете метод NSURLConnection
, вы сможете проверить причину его отказа, реализовав метод делегата connection:didFailWithError:
.