1、block定义和使用:
void (^myblock)() = ^{ // 没有形参,block体可以省略小括号
NSLog(@"--------");
};
myblock(); // 调用block
int (^sumblock)(int, int) = ^(int a, int b){ // 有参数,有返回值
return a+b;
};
//同上
//int (^sumbloc)(int, int);
//sumbloc = ^(int a, int b){
// return a+b;
//};
int c = sumblock(10, 11); // 调用block
2、__block修饰变量
默认情况下block内部是可以访问外部变量的,但是不可以修改,如果想修改外部变量,那么使用__block修饰
__block int a = 10;
3、通过typedef使用block
// 指针指向函数
/*
类似于指针指向函数:
int sum(int a, int b)
{
return a+b;
}
int(*p)(int, int) = sum;
int c = p(1, 2);
*/
typedef int (^MyBlock)(int, int); // 类似指向函数的指针
int main()
{
MyBlock sumBlock = ^(int a, int b){
return a + b;
};
sumBlock(1, 2);
}