プロジェクト用に 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を設定するにはどうすればよいですか? この問題のベスト プラクティス
は何ですか?