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

コメントを投稿

.mitmproxyを使ってHTTPSの通信を確認

公式のドキュメント https://docs.mitmproxy.org/stable/ # install ## mac ``` $ brew install mitmproxy ``` ## iPhone ### 証明書 セキュアな通信を傍受するために、プロファイ...