iOS Blocks

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 件のコメント:

コメントを投稿

DataStoreの辛いところ

# DataStoreの限界 FacebookやインスタグラムのようなSNSで、投稿、公開範囲、お気に入りなどの機能をDataStoreで実現しようとするとどうしても辛くなる。 ## DataStoreで実現可能? - users - id - feeds - i...