OC語言中的block

2021-06-26 23:27:15 字數 802 閱讀 6704

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 變...