block封裝了一段**,可以在任何時候執行
block可以作為函式引數或者函式的返回值,而其本身又可以帶輸入引數或返回值。
蘋果官方建議盡量多用block。在多執行緒、非同步任務、集合遍歷、集合排序、動畫轉場用的很多
blocks的定義:
int (^mysum)(int, int) = ^(int a, int b) ;
定義了乙個叫mysum的blocks物件,它帶有兩個int引數,返回int。等式右邊就是blocks的具體實現
block可以訪問區域性變數,但是不能修改。
int sum = 10;
int (^myblock)(int) = ^(int num) ;
如果要修改就要加關鍵字:__block
__block int sum = 10;
blocks和函式指標對比
定義函式指標:
int (*myfn)();
定義blocks
int (^myblocks)(int,int);
呼叫函式指標:
(*myfn)(10, 20);
呼叫blocks
myblocks(10, 20);
blocks的賦值:
在宣告的同時定義變數,然後賦值
int (^mysum)(int,int) = ^(int a,int b) ;
也可先用typedef先宣告型別,再定義變數進行賦值
typedef int (^mysum)(int,int);
mysum sum = ^(int a,int b) ;
OC語言BLOCK和協議
oc語言 block 和協議一 bolck 一 簡介 block是什麼?蘋果推薦的型別,效率高,在執行中儲存 用來封裝和儲存 有點像函式,block 可以在任何時候執行。bolck和函式的相似性 1 可以儲存 2 有返回值 3 有形參 4 呼叫方式一樣。識別符號 二 基本使用 1 定義block變數...
OC語言(七)Block複習
看下面一道block的面試題 int i 10 void myblock i 100 myblock 經過這個過程後,輸出的i應該是10而不是100,在定義block時會將block前面的區域性變數進行拷貝,後續的變數改變不會影響block內部的拷貝變數值,如果要操作block中變數的值,應該加上 ...
OC語言BLOCK和協議
oc語言 block 和協議一 bolck 一 簡介 block是什麼?蘋果推薦的型別,效率高,在執行中儲存 用來封裝和儲存 有點像函式,block 可以在任何時候執行。bolck和函式的相似性 1 可以儲存 2 有返回值 3 有形參 4 呼叫方式一樣。識別符號 二 基本使用 1 定義block 變...