zoukankan      html  css  js  c++  java
  • block(闭包)

    格式

    1做类的属性

      示例:void(^myBlock1)()

      口诀:返回值,括号,括号

    2做类的方法

      示例:(void(^)(NSArray *result)) results

      口诀:大括号小括号小括号,变量名

    使用方式

    1做类的属性 

      最后用来发布通知,执行block即可

      甚至同时发送数据参数,给方法调用者,这样返回数据比返回值形式,更好,

      因为这样传参,不是同步的,而是异步响应式的,更加灵活安全。

    2做类的方法参数

       价值:1给调用者传递参数,2保存调用者根据参数而操作的block代码 3在恰当的地方执行block,比如代理方法内

                好处是可以延时跨方法执行内置block,应用场景是,传递服务器的代理方法数据

      

    3定义为pch文件的宏

    typedef void(^CompleteBlock)(id data,NSError *error);

    @注意点

      1只有用typeDef给block类型,定义为宏后,调用者敲block才会生成一个大括号

      2block的*stop的停止很鸡肋,因为它不会立马停止

        比如当轮循环有三行代码里,我希望第一句时就停止,但是它要把剩下两句都执行完后,才结束当轮的循环

        而for循环的reture,break就不会执行当轮剩下的代码。

    我的理解

    1block变量,不仅仅是个变量,可以理解为一个消息管道,消息器

    2个人理解,block是个三段式管道

      block头:负责定义block的空壳名字,实体参数

      block手,负责发送事件消息,并可同时传递数据

      block尾,根据消息和数据,做自己该做的事。

    #把block嵌入类属性,让对象属性成为最快捷的消息广播器,

       把block嵌入类方法,让方法更灵活。

       别人调用我的类方法,不仅可以让我的方法执行我已写的操作,还能执行别人嵌入的操作

       更具有灵活性,比如程序员的一天。

      编码者代码

    - (void) day:(void (^)()) work

    {

        [self preWork];//执行编码者的操作

        work();        //执行调用者的操作

        [self afterWork];//执行编码者的操作

    }

     调用者代码

       [person day:^{

            NSLog(@"打豆豆");

        }];

    #一天程序员这个例子,的确不错,不过有时会让人以为调用者的代码,是继续扩充编码者的代码业务

      其实并不是这样,还是只是个传消息和数据的喇叭而已,调用者做什么事后续不会影响编码者

       一般调用者只是拿到数据保存起来了,然后使用,那为何不用返回值直接返回呢? 下面继续谈

    #block返回值的好处是,可以开多个通道,且是异步的

       返回值只有一个通道,而block可以开很多个,一般成功一个回调,失败一个回调

      不然你都堆在一个返回数组里,调用者又要展开数组,查看成功或失败,不好用

    3block其实就是一个小型函数,小型加工器,更是未来机器

     创建block的地方是block的基地,使用的地方是战场

     基地创建block,战场使用block,使用block的参数做燃料。

     block参数,是block机器运行的必要资源燃料,

     block若有返回值的话,也是给基地提供某种资源燃料,否则只是传递消息

    4一个方法有普通参数,也参数,意味着什么?

      对调用者来说,普通参数意味着,那个方法机器的普通零件

                          block参数意味着,方法机器预置的未来操作,一般是事件响应的操作。

      

  • 相关阅读:
    spring——依赖注入
    jsp课程笔记(一)
    spring入门程序(一)
    关于java项目导入到eclipse无法访问的问题
    lnmp一键下载及安装
    spring配置文件application.Context配置文件的约束信息快速获取
    Tomcat下载与安装
    Nginx配置java项目在Tomcat下访问
    webstrom快捷键合集
    Ubuntu 开启SSH服务以及有关设置:安装,指定端口号、免密登录、远程拷贝
  • 原文地址:https://www.cnblogs.com/dzq1991/p/6234623.html
Copyright © 2011-2022 走看看