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:返回零
这不是说有错误。只是你期待异步调用的行为就好像它是同步的。 – 2013-06-02 14:44:23
你能解释一下你的意思吗? –
您希望传递给dispatch_async的块中的命令序列按顺序执行,并在函数返回后完成。但是,由于它是** async,所以**不会发生 - 函数在块结束运行之前返回。这在什么不明显?你没有阅读'dispatch_async()'的文档吗? – 2013-06-02 14:54:02