日々精進

新しく学んだことを書き留めていきます

エキスパートObjectiveーCプログラミング 1

○ARCについては目新しい情報無し


○Blocks
・構文は以下。戻り値の型と引数リストはvoidの場合省略可能。
^戻り値の型(引数リスト){式}
・typedefを使って型宣言を簡潔にできる。Blockは普通の変数と同じように代入したりできる。
typedef int (^blk_t)(int);


・Blockの実行 ブロック変数の後ろに括弧をつける
blk(10)


・BlockはBlock内で参照されている変数をキャプチャする(=コピーする)
・__blockはBlock内で書き換えたい変数につける。これをつけないとBlock内で変更できない
・__blockがついた変数は参照カウントが+1される。Blockが所有していることになる。Blockが破棄されると参照カウントも−1される。
・Blockや__blockがついた変数、キャプチャされた変数はメソッドのスコープを抜けても破棄されないようヒープ領域にコピーされる。