作用:
1.block封裝了一段代碼,可以在任意時候調用執行
2.block可以作為函數參數或者函數的返回值,而本身又可以帶入參數或返回值
3.block在iOS中的多線程、異步任務、集合遍歷、集合排序、動畫專場用的多
特點:
a. block用來保存一段代碼(預先準備好的一段代碼)
b. block的標志:^
c. block和函數指針很像
Blcok類型:
①. 無形參無返回值:void (^blockFunction)(void)
②. 有形參無返回值:void (^blockFunction)(int a, int b)
③. 無形參有返回值: int (blockFunction)(void)
④. 有形參有返回值: int (blockFunction)(int a, int b)
事例一:在函數內部定義block并調用執行
#include <stdio.h>
int main(void)
{
// 先定一個block函數
int (^sumFunction)(int a, int b) = ^(int x, int y)
{
// 此{}里的代碼現在壓根沒有執行,只是預先準備好了
return (x + y);
}
// 調用執行block函數
int temp = sumFunction(2, 3);// 此時會執行上面{}里的代碼塊,并返回一個int類型的數值
// 打印出來
printf("temp = %d\n", temp);
// 控制臺打印信息是
// temp = 5
return 0;
}
事例二:在函數外部定義block類型并調用執行
#include <stdio.h>
typedef int (^blockFunctionType)(int a, int b);
int main(void)
{
// 使用blcok類型實現一段代碼塊
blockFunctionType blockFunction = ^(int x, int y)
{
// 此{}里的代碼現在壓根沒有執行,只是預先準備好了
return (x + y);
};
// 調用執行block函數
int temp = blockFunction(2, 3);// 此時會執行上面{}里的代碼塊,并返回一個int類型的數值
// 打印出來
printf("temp = %d\n", temp);
// 控制臺打印信息是
// temp = 5
return 0;
}