iOS 4から使えるようになったBlocksは、余計なことを気にせず気軽に使えるとてもよい拡張機能で、僕も便利にガンガン使わせてもらっています。 ただ、表向きは親切なのですが、裏側の実装は変態的なことになっており、それを理解するまで疑問に思うことや不安を感じることが多々ありました。 というわけで、自分の復習もかねて、Blocksに関して色々調べた結果をここにまとめておきます。随時追記予定&つっこみ歓迎です。 Blockの正体は構造体 下記のようにBlock変数 myblock を定義したあとでブレークさせると、XcodeのVariables Viewでその中身を見ることができます。 「myblock = (struct __block_literal_1 *) 0xbfffd490」ということなので、myblock は __block_literal_1 という型の構造体のポインタ変数で、
![わかっているようでわかっていなかったBlocksの仕組み - bricklifeのはてなブログ](https://cdn-ak-scissors.b.st-hatena.com/image/square/75c22499448196a854c32e6b72548479c24c8321/height=288;version=1;width=512/http%3A%2F%2Ffarm8.staticflickr.com%2F7088%2F7022971277_5f0fe5caa5.jpg)