【发布时间】:2015-07-02 07:56:41
【问题描述】:
我正在为我的项目开发一个 networkUtil,我需要一个方法来获取一个 url,并使用 NSURLSessionDataTask 返回从该 url 接收到的 JSON 以从服务器获取 JSON。方法如下:
+ (NSDictionary*) getJsonDataFromURL:(NSString *)urlString{
__block NSDictionary* jsonResponse;
NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionDataTask *dataTask = [session dataTaskWithURL:[NSURL URLWithString:urlString] completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
jsonResponse = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
NSLog(@"%@", jsonResponse);
}];
[dataTask resume];
return jsonResponse;
}
问题是我的方法中的 completionHandler 和 方法本身 在 不同的线程 上运行,最后一行的 jsonResponse 是总是nil
我应该如何使用从 urlString 返回的 json 设置 jsonResponse?
此问题的最佳做法是什么?
【问题讨论】:
-
这是因为您正在进行异步调用。有很多关于它的问题。
标签: ios objective-c objective-c-blocks completionhandler