4.0から使えるようになったブロック構文。3系のデバイス(特にiPad)のことがあったため、なかなか本格的に使う機会が訪れなかったのですが、先日iPadもOSが4.2となりブロックが使えるようになり、これでようやくブロック構文を本格的に使って実装を行っていく事ができそうです。2.0(改訂版)には「ブロックオブジェクトを用いることで、関数を呼び出す箇所で行いたいと考えていることを、まさにその位置に、そこにある情報を利用して記述することができる(P.331)」と書かれています。通常非同期処理を実装するときは処理が完了したときに実行したいコードをコールバックメソッドという形で実装します。この方法で実装すると、非同期処理を呼び出しコードと結果をうけて実行されるコードがソースコードの中で別々の所に記述されることになります。ソースコードが長くなったり、コールバックメソッドの種類が増えてくると、この方法による実装では一つ一つの処理の流れを追っていきにくくなります。ブロックを使うと、今まで呼び出しと結果をうけて実行されるコードを別々の個所に記述していたものを、一つの流れとして記述することができます。ブロックを使うデメリット変数の扱いが複雑です。2.0(改訂版)」14章を参照してもらうとして、注意して使わないとバグ/混乱の元になります。非同期処理、マルチスレッドで処理を行うような場合はとくに注意が必要です。ブロックを使ってHTTP通信を書くブロックを使うとプログラムをわかりやすく記述できるケースは沢山あると思いますが、個人的にはHTTP通信部分こそブロック向きじゃないかなと思って調べていたら、既にブロックを使って非同期でHTTP通信を実装している方がいました。exampleこのままでも十分に便利ですが、これをベースに少し使いやすいように変更してみました。変更したい内容としては、iOSアプリでは、メインスレッドで処理を行わなければ行けない場合が多いので、結果のブロックはメインスレッドで実行させたい。(その分メインスレッドの動きは遅くなりますが)結果は文字列ですぐに扱いたいです。ここで、この結果をうけて次の処理を書いたりだとか。非同期処理でブロック(ややこしい)しないので、こっちが先に呼ばれることもあります。}];}結論やっぱり便利そう。コメントをキャンセルメールアドレスが公開されることはありません。*ウェブサイトご意見、ご感想をお願いします。四年ぶりにiPadを新調した。