
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 件のコメント:
コメントを投稿