iOS7から、NSURLSessionというクラスが追加されました。
NSURLConnectionもHTTP通信をするクラスなのですが、
NSURLSessionは大変使いやすいので、iOS7ではこちらを使いましょう。
NSURLConnectionとNSURLSessionを使って、HTTP通信をするサンプルです。
typedef void (^NSURLRequestCompletionHandler)(id, id, id); // Completion Handler Block NSURLRequestCompletionHandler handler = ^(NSURLResponse *response, NSData *data, NSError *error) { if ([data length] > 0 && error == nil) { // 成功 NSString *result = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; NSLog(@"RESULT: %@", result); } else if ([data length] == 0 && error == nil) { // DLコンテンツ無し NSLog(@"Nothing to load"); } else if (error != nil) { // 失敗 NSLog(@"Error = %@", error); // リトライするのであれば、delegateをここで呼ぶ } }; if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_6_1) { [NSURLConnection sendAsynchronousRequest:myNSURLRequest queue:[NSOperationQueue mainQueue] completionHandler:handler]; } else { // Use NSURLSession for background upload [[[NSURLSession sharedSession] dataTaskWithRequest:myNSURLRequest completionHandler:handler] resume]; }
通信終了後のメソッドはまとめて、blockにして、
iOSのバージョンコードでNSURLConnectionとNSURLSessionを分けてます。
とりあえずこれでいいのかな?
0 件のコメント:
コメントを投稿