Obj.C

obj.C:非同期通信でURL読み込み

非同期にURLを読み込む実装にトライしました。

非同期読み込みの全体構成は次の通りです。
1. デリゲートの宣言(デリゲート変数の初期化)
2. メイン側の処理(URL設定/非同期通信のキック/後処理)
3.1 非同期通信の準備: MSMutableDataインスタンスを作成し初期化
3.2 非同期通信でURL読み込み: 読み込んだデータを追加
3.3 非同期通信の完了時の処理
3.4 非同期通信のエラー処理

1. デリゲートの宣言(デリゲート変数の初期化)

メイン(MesaClip.m)の初期化を行える場所(– (void)awakeFromNib)でデリゲート変数を初期化します。AppDelegate.mapplicationDidFinishLaunching:でもいいはずですが、途中からバイパスされるようになったため、MesaClip.mに写しました。

① MesaClip.hに非同期通信URL読み込み用のdelegate変数を定義します
id              delegateMesa;

② 初期化を行える場所(- (void)awakeFromNib)で変数を初期化します。
delegateMesa = [[MesaCont alloc] init];

2. メイン側の処理(URL設定/非同期通信のキック/後処理)

IBActionかPush ButtonでURLを読み込むところに実装することになります。現時点では、サンプルプログラムを動かすTestボタンが押されたときにこのメイン処理が動くようになっています。読み込まれたURLの内容を非同期通信のデリゲートの中で画面表示する処理が無効になるため、ここでは1回目のTestボタンのクリックで非同期通信、2回目のTestボタンクリックで画面表示をするようにしました。いずれ、この処理は切り出して、URL読み込みのところで呼び出せるようにする予定です。

スクリーンショット 2014-02-24 08.05.103.1 非同期通信の準備: MSMutableDataインスタンスを作成し初期化
スクリーンショット 2014-02-24 08.15.15
3.2 非同期通信でURL読み込み: 読み込んだデータを追加
スクリーンショット 2014-02-24 08.15.39
3.3 非同期通信の完了時の処理
スクリーンショット 2014-02-24 08.16.01

3.4 非同期通信のエラー処理
スクリーンショット 2014-02-24 08.16.16

これらの4つの処理はセットです。現時点での問題として、①プログレスの処理、②画面表示の処理がこの非同期処理の中ではうまく行っていません。コードを書いているつもりなのですが、無効になってしまいます。調べる必要があります。

参考:
NSURLとNSURLConnection (6/6)
NSURLConnectionで同期通信・非同期通信してみた

※ ソースコードはどこにも表示はありませんが5.1になりここにあります。