iOS深入浅出blockシリーズ(1)
1298 ワード
blockはObjective-Cでcで書かれた拡張機能で、自動変数付き匿名関数です.
一、理論の基礎
iOS4.0はblockをサポートし始め、プログラミング中にblockはocによってオブジェクトと見なされ、コードがカプセル化され、いつでも実行できます.ローカル変数については読み取り専用です.
定義:
宣言インプリメンテーションは1つに書かれています.
先に宣言してから実現する
ここで、aBlockという名前のblocksオブジェクトを定義し、関連情報を携帯します.
1、aBlockには2つの形式パラメータがあり、それぞれintタイプである.
2、aBlockの戻り値はintタイプである.
3、等式の右側はblocksの具体的な実現である.
4、^辺blocksの宣言と実現の標識(キーワード);
もちろん、他の形式のblockを定義することができます.e.g:戻り値なし、形式パラメータなしなど;
blockのアクセス権
ローカル変数にアクセスできますが変更できません.変更するにはキーワードを追加する必要があります.ブロックかstatic.キーワードが追加されました_blockの変数はblock変数と呼ばれます.
ここではstaticとconstの違いを引き出します.
1.const修飾変数は、この変数が読み取り専用であることを示す.
2.static修飾変数.ここでstaticには2つの役割があります.1つは役割ドメインを説明し、2つは現在の変数が静的に格納されていることを説明します.
変更:
一、理論の基礎
iOS4.0はblockをサポートし始め、プログラミング中にblockはocによってオブジェクトと見なされ、コードがカプセル化され、いつでも実行できます.ローカル変数については読み取り専用です.
定義:
宣言インプリメンテーションは1つに書かれています.
int a = 10;
int (^aBlock)(int num) = ^(int num)
{
return num * a;
};
先に宣言してから実現する
int a = 10;
int (^aBlock)(int num);
aBlock = ^(int num){
return a*num;
};
ここで、aBlockという名前のblocksオブジェクトを定義し、関連情報を携帯します.
1、aBlockには2つの形式パラメータがあり、それぞれintタイプである.
2、aBlockの戻り値はintタイプである.
3、等式の右側はblocksの具体的な実現である.
4、^辺blocksの宣言と実現の標識(キーワード);
もちろん、他の形式のblockを定義することができます.e.g:戻り値なし、形式パラメータなしなど;
int a = 10;
int (^aBlock)(int num);
aBlock = ^(int num){
return a*num;
};
blockのアクセス権
ローカル変数にアクセスできますが変更できません.変更するにはキーワードを追加する必要があります.ブロックかstatic.キーワードが追加されました_blockの変数はblock変数と呼ばれます.
ここではstaticとconstの違いを引き出します.
1.const修飾変数は、この変数が読み取り専用であることを示す.
2.static修飾変数.ここでstaticには2つの役割があります.1つは役割ドメインを説明し、2つは現在の変数が静的に格納されていることを説明します.
int a = 10;
int (^dBlock)(int) = ^(int num)
{
a++;
return num * a;
};
変更:
__block int a = 7;
int (^dBlock)(int) = ^(int num)
{
a++;// work!
return num * a;
};