タグ

ブックマーク / kakko-no-ireko.blogspot.com (1)

  • One Flew Over The {()}'s Nest: iOSでBlocks(クロージャ)1

    iOS 4プログラミングブックはBlocksについて分かりやすく書いてある。 ●Blocksとは いわゆるクロージャ。 関数内で宣言できるいわゆる無名関数だが、ただの無名関数ではない。 引数以外に外側のスコープのローカル変数を参照出来る。 前に^が付いているのがBlock構文である。 戻り値がvoidなので省略が可能で ^(int arg) { /* Block処理 */ }; としたが、省略しない場合は void ^(int arg) { /* Block処理 */ }; となる。 ちなみに引数もvoidなら更に省略できて ^{ /* Block処理 */ }; と記述出来る。 下のコードでは変数fnにBlockを代入し、aとbをインクリメントした後でfnを関数ポインタの様に呼び出している。 // int a = 1, b = 1; void (^fn)(int) = ^(int arg

    efcl
    efcl 2012/02/23
    Blocksついて
  • 1