Blocksとは
無名関数みたいなもの記述方法
^(引数){ /* 処理 */ }
^(void){ /* 処理 */}
^(int arg){ /* 処理 */}
処理を保存している!!
void (^sample)(int) = ^(int arg){ print "%d", arg; }
処理 print "%d", arg; はdataセクション
int localA = 1;
void (^sample)(int) = ^(int arg){ print "%d:%d", arg, localA; }
処理 print "%d:%d", arg, localA; はスタックに保存される
copyを使うとヒープ領域に保存される
循環参照させないために
ブロックないではselfを使わない
プライベート変数(ivar)も直接使わない
nilチェックを行うために一旦strong変数に代入する
__blockはARC無効の場合、retainカウントされる
iOS4と5以降では記述の仕方が違う
iOS4では__weakが使えないため__unsafe_unretainedを使う
0 件のコメント:
コメントを投稿