黑马程序员_新的数据类型block

来源:互联网 发布:ftp 21端口 编辑:程序博客网 时间:2024/06/06 12:21

------- IOS培训android培训、期待与您交流! ----------

Block封装了一段代码,可以在任何时候执行
Block可以作为函数参数或者函数的返回值,而其本身又可以带输入参数或返回值。
苹果官方建议尽量多用block。在多线程、异步任务、集合遍历、集合排序、动画转场用的很多.

block
   block的标识是^
   block的使用与函数十分相似:
        1>都可以保存代码
   2>都有返回值
3>有形参
  void (^myblock)() =^{        NSLog(@"-------");        NSLog(@"--------");   };        myblock();

定义带有参数的block形式如下
   int (^sumBlock)(int, int) = ^(int a,int b)    {        return a+b;    };      int a = sumBlock(10,11);  NSLog(@"a=%d",a);

与定义指向函数的指针类似
int sum(int a,int b){    return  a+b;}    int (*p)(int,int)=sum;    int b = p(10,12);    NSLog(@"b= %d",b);
对于每次bliock的定义都要使用void (^myblock)(int ,int)这么一串代码可以通过typedef 来简写
typedef  int (^MyBlock)(int, int);

在给变量赋值时使用如下代码
Myblock sumblock = ^(int a, int b){      return a+b;}
block 内部是可以直接访问外部的变量的值,但是不可以修改,如果想要修改外部变量的值需要是使用关键字_block
   int a = 10;    __block int b =4;    void (^block) = ^{        NSLog(@"a=%d",a);     //   a = 20;        b = 5;    };    block();



0 0
原创粉丝点击