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限定詞 限定值有 ...