Objective C學習筆記 Block

2021-12-29 16:39:25 字數 2007 閱讀 1968

block:塊語法,本質上是匿名函式(沒有名稱的函式),block變數存放函式的實現,通過block變數能直接調?函式。標準c裡面沒有block,c語言的後期擴充套件版本,加?了匿名函式。c++、js、swift等語?,有類似語法,叫做閉包。block語法和函式指標很相似。

block型別:int (^)(int) block變數:myblock block值:^ int (int num) 即:^ 返回值型別 (引數列表) 其中 返回值型別 可以省略。

/* block 型別: int (^)(int, int)

* block 變數: block1

* block 的值: ^int (int x, int y) ;

^ 返回值型別 (引數列表) (返回值型別可以省略)

*//* 1. 無返回值, 無引數的block */

void (^block3)() = ^()

;block3(); /* block呼叫 */

/* 2. 無返回值, 有引數 */

void (^block4)(int, int) = ^(int x, int y)

;block4(3, 45);

/* 3. 有返回值, 無引數 */

int (^block5)() = ^()

;nslog(@%d, block5());

/* 4. 有返回值, 有引數 */

int (^block6)(int, int) = ^(int x, int y)

;nslog(@%d, block6(3, 5));

int (^block1)(int x, int y) = ^(int x, int y) ;

int a = block1(32, 34); // block的使?和函式指標的使用類似

nslog(@「%d」, a); // 列印結果:66

block進?typedeftypedef int (^blocktype)(int x, int y)

原型別:int (^)(int x, int y)

新型別:blocktype

/* block typedef */

typedef int(^blocktype)(int, int);

blocktype block1 = ^(int x, int y) ;

nslog(@%d, block1(3, 5));

block寫法

int (^block1)(int x, int y) = ^(int x, int y) ;blocktype block1 = ^(int x, int y) ;上述兩種實現是等價的。

blcok與區域性變數和全域性變數

/* main函式外定義的全域性變數 */

int n = 100;

/* 知識點4 block與區域性變數 全域性變數 */

/* 區域性變數 */

int a = 100;

int (^block)() = ^() ;

nslog(@%d, block());

int (^block2)() = ^() ;

/* 總結: 預設情況下, block可以訪問但不能更改區域性變數 */

__block int b = 200;

int (^block3)() = ^() ;

nslog(@%d, block3());

/* 總結: 用__block修飾的區域性變數, block裡面可以更改值 */

/* block 與全域性變數 */

int (^block4)() = ^() ;

nslog(@n = %d, block4());

static int num = 1;

int (^block5)() = ^() ;

nslog(@num = %d, block5());

Objective C 學習筆記

1 is a 是乙個 繼承,提高執行效率,減少重複 2 has a 有乙個 復合,物件引用其它物件時,利用其它物件特性。3 返回屬性值的訪問方法,名稱中不能使用get這個詞 4 類名首字母大寫,變數首字母小寫。5 在objective c中所有物件間互動都是通過指標實現的。6 指標值被賦值,只有乙個...

Objective c學習筆記

property是object c的乙個特性,可以讓我們輕鬆實現成員變了的setting和getting方法。具體的語法如下 以成員變數nsstring m name為例 標頭檔案中宣告如下 property nsstring m name m檔案實現 synthesize m name 這樣我們便...

Objective c學習筆記

一 ojective c 建立物件涉及到一下註解 inte ce implementation 前乙個註解定義的是要實現的行為 後乙個註解是實現inte ce定義的行為 1.1在objective c中總共有4個基本資料型別,分別是int float double char 1.2限定詞 限定值有 ...