天天看別人的block,各種羨慕嫉妒恨。狠下心來 自己也玩玩block,看看這水深不深。
block 宣告格式:
return_type (^block_name)(param_type,param_type,,……)
例:int (^personblock)(int,int)
block 定義格式
^return_type (param_type param_name,param_type param_name,……)
block 還有另外一種不同的定義方法。 以 ^ 符號起始,後面跟隨著引數,這裡的引數必須有引數名, 還必須和它要賦值到的 block 宣告中引數列表裡面的引數型別和順序相匹配。下面是實際的**。
示例:^(int num1,int num2)
宣告和定義結合起來就是 蘋果官方的例子:
int multiplier = 7;
int (^myblock)(int) = ^(int num)
此時 multiplier的值是不可變的,如果想在 block裡對 multiplier進行改變,則需要 前面加上 __block (兩個下劃線)
__block int multiplier = 7;
int (^myblock)(int) = ^(int num)
block 本身的呼叫方法 與 函式的呼叫方法基本類似 例 int result= myblock(4);
block 可以直接作為引數傳遞,就像乙個內聯函式
qsort_b(mycharacters, 3, sizeof(char *), ^(const void *l, const void *r) );
除錯:你可以在blocks中設斷點並單步跟蹤. 你也可以在gdb裡直接用invoke-block
命令呼叫blocks,如下所示:
$ invoke-block myblock 1020
如果要傳遞c的字串,你必須用引用括起來, 比如把this string
傳給dosomethingwithstring
block, 得這麼寫:
$ invoke-block dosomethingwithstring "\"this string\""
IOS block學習筆記
天天看別人的block,各種羨慕嫉妒恨。狠下心來 自己也玩玩block,看看這水深不深。block 宣告格式 return type block name param type,param type,例 int personblock int,int block 定義格式 return type p...
IOS block簡單講解
block定義 int sum int a,int b int a,int b 返回型別 blockname 引數型別 引數1,引數型別 引數2 引數型別 引數1,引數型別 引數2 呼叫block int n n sum 10,15 nslog a b i n typedefint mysum in...
iOS block 內容詳解
viewcontroller.m test addentrydictionary 01 created by jeffasd on 16 6 26.import viewcontroller.h typedef int myblock int,int typedef int tyblock int,...