定义
简单block的定义类似函数指针,差别在于用^ 代替函数指针的*
例:
//申明变量
(id)(^block)(int code);
//定义
block = ^id(int code){
NSLog(@"this is a block");
};
//调用
block();
大多数情况,我们定义的block都是内联方式
dispatch_async(dispatch_get_global_queue(0,0),^{
});
block特点:
- 程序块可以在代码中以内联的方式定义。
- 程序块可以访问在创建她的范围内存的可用变量。
修改block之外的变量
默认情况下,在程序块中访问中访问的外部变量都是复制过去的,即写操作对外部变量不生效。为使其生效,可以添加上修饰符
__block int a = 0;
void (^foo)(void) = ^{
a = 1;
};
foo();