NSString *jsonPath = [[NSBundle mainBundle] pathForResource:@"CRN_JSON"
ofType:@"json"];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
data = [NSData dataWithContentsOfURL:
[NSURL URLWithString:@"http://properfrattire.com/Classifi/CRN_JSON.json"]];
[self performSelectorOnMainThread:@selector(fetchedData:)
withObject:data waitUntilDone:YES];
});
Моя переменная данных равна нулю после запуска этого кода. Если вы перейдете по ссылке, вы увидите, что это файл JSON. Я запустил эту функцию с таким же файлом локально, но не смог получить данные по указанному URL без ошибок.NSData dataWithContentsOfURL: return nil
Это не значит, что есть ошибка. Просто вы ожидаете, что асинхронный вызов будет вести себя так, как если бы он был синхронным. –
Можете ли вы объяснить, что вы подразумеваете под этим? –
Вы ожидаете, что последовательность команд в блоке, переданном dispatch_async, будет выполнена в порядке и будет завершена после возвращения функции. Однако, поскольку это ** async, ** это не произойдет - функция вернется до завершения работы блока. Что не очевидно в этом? Разве вы не читали документацию для 'dispatch_async()'? –