Block

在Object-C中,有一个新的语言机制,叫做Block。何为Block,我们可以将block理解为方法和对象的组合。block既像方法一样是一个逻辑模块,又像对象一样可以声明和传递

1.    int (^adder)(int a,int b);


2.    adder = ^int (int x,int y){

        return x+y;

    };

第一句为block的声明,声明有这么一个block,名称为adder,参数为两个int,返回值为一个int。

第二句为block定义,花括号内表明返回的是参数相加的结果。

3.     NSLog(@"%d",adder(1,4));

在声明和定义过后,我们就可以对这个block进行调用了。

我们发现,其实block看起来很像方法。但是block实际上是一个对象。怎么理解呢,方法是面向过程的设计,也就是说,当我们需要实现某个功能时,直接调用相应的方法就OK了,但block有具体的作用域,我们需要先获得block对象。

从block的使用可以进一步看出block的意义。

block最常用于回调。所谓回调,就是在某个事件发生前预备好一段代码,相应的事件一旦发生,系统就会执行这段代码。回调,其实就是执行某一个准备好的方法。但是通常会有问题是,执行某个事件的类A并不知道在完成后具体应该做什么,而是调用A的类B知道应该怎么做,这时我们就需要回调。
回调常用的是代理模式delegate,和观察模式。这两种方式都会依赖对象,需要创建对象。在一些比较简单单一的情况下,我们并不想增加耦合。也不希望是这样的比较繁琐的方式。
这时block就十分好用,因为block也是对象,所以我们可以在B中定义block,然后将block发送给A,这样A在操作完成后,直接可以调用block,执行需要的操作




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值