iOSアプリ開発における別スレッドで通信する時の注意点(NSURLSession)
UI画面のカクつきを軽減するために、内部処理を別スレッドで実施することは少なくない。
その際、NSURLSessionでサーバ通信を行う場合、設定に気をつけないと通信結果がメインスレッドに返却されていまい、結果として画面のカクつきを引き起こしてしまう。
今回は、別スレッド上でNSURLSessionを用いて通信を行う場合、メインスレッドに通信結果が返却されない初期化方法について紹介する。
と言っても方法は単純である。NSURLSessionを初期化する時の引数「delegateQueue」に設定する値を「[NSOperationQueue currentQueue]」に変更するだけである。
<メインスレッドに結果が返却される>
NSURLSession *session = [NSURLSession sessionWithConfiguration:config delegate:self delegateQueue:[NSOperationQueue mainQueue]]; //←ポイント
<別スレッドに結果が返却される>
NSURLSession *session = [NSURLSession sessionWithConfiguration:config delegate:self delegateQueue:[NSOperationQueue currentQueue]]; //←ポイント
<お勧め書籍>