Используйте NSDictionary 'initWithContentsOfURL' вместо Reachability.h

Я хотел бы лучше понять функционирование initWithContentsOfURL из NSDictionary,
Эта функция сама управляет разрывом соединения?
От initWithContentsOfURL из NSDictionary ссылка:

- (id)initWithContentsOfURL:(NSURL *)aURL

Возвращаемое значение

Инициализированный словарь, который может отличаться от оригинала, который содержит приемник в словаре aURL, или ноль, если есть ошибка или если содержимое ресурса является недопустимым представлением словаря.

Хорошо, но не указывает, является ли переданный URL действительным или нет.

Но так как я уверен, что мой plist хорошо отформатирован, я мог бы использовать рассматриваемый метод, чтобы увидеть, доступно ли соединение, или вместо того, чтобы использовать Reachability.h, Разумеется, нужно просто понять, доступно ли соединение для передачи данных, а не понять, какое соединение активно (например, WiFi и т. Д.). Я говорю это потому, что если я сделаю простой тест, как это в режиме самолета, [dict count]; всегда возвращает 0.

NSURL * plist = [NSURL URLWithString: @ "http://www.example.com/example.plist"];
NSDictionary * dict = [[[NSDictionary alloc] initWithContentsOfURL:plist] autorelease];
  if ([dict count] == 0) {
      //no connection
  }

ТИА.

1 ответ

Решение

Да, вы можете сделать это. Имейте в виду, что [[NSDictionary alloc] initWithContentsOfURL:plist] синхронный блокирующий вызов Если вы заблокируете основной поток слишком долго, вы получите 0x8BADF00D, и сторож будет убивать ваш процесс.

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