Используйте 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, и сторож будет убивать ваш процесс.