iOS Block使用

定义

简单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特点:

  1. 程序块可以在代码中以内联的方式定义。
  2. 程序块可以访问在创建她的范围内存的可用变量。

修改block之外的变量

默认情况下,在程序块中访问中访问的外部变量都是复制过去的,即写操作对外部变量不生效。为使其生效,可以添加上修饰符

__block int a = 0;
void (^foo)(void) = ^{
  a = 1;
};
foo();

你可能感兴趣的:(iOS Block使用)