Используйте NSDictionary 'initWithContentsOfURL' вместо Reachability.h - PullRequest
2 голосов
/ 01 ноября 2011

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

- (id)initWithContentsOfURL:(NSURL *)aURL

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

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

Хорошо, но не указываетявляется ли переданный 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
  }

TIA.

1 Ответ

2 голосов
/ 01 ноября 2011

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

...