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

------- 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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值