1.Block是C語言層次的語法,有點類似函數指針,具有運行時的特點
Block objects are a C-level syntactic and runtime feature that allow you to compose function expressions that can be passed as arguments, optionally stored, and used by multiple threads.
iOS SDK 4.0開始,Apple引入了block這一特性,block就是一個代碼塊,但是它的神奇之處在于在內聯(inline)執行的時候(這和C++很像)還可以傳遞參數。同時block本身也可以被作為參數在方法和函數間傳遞,這就給予了block無限的可能。
------------------------------------------------------------
2.Block使用
定義Block:
int (^oneFrom)(int);
創建Block:
oneFrom = ^(int anInt) {
return anInt - 1;
};
使用Block
printf("%d\n", oneFrom(10));
說明:
(1)在類中,定義一個Block變量,就像定義一個函數;
(2)Block可以定義在方法內部,也可以定義在方法外部;
(3)只有調用Block時候,才會執行其{}體內的代碼;
------------------------------------------------------------
3.Block使用場景
Block很多的用處是跨越兩個類來使用的,Block塊是在棧中的,除了塊就為空
------------------------------------------------------------
4.__block關鍵字的使用
當在block中腰修改外部的變量時,需要在外部的變量加_Block關鍵字(外部變量是在block申明時被拷貝下來的,所以外部變量改變時block內對齊的拷貝無影響)
另外一種方法是:使用實例變量
------------------------------------------------------------
5.Block作為property屬性實現頁面之間傳值