OC_Block块

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OC_Block块相关的知识,希望对你有一定的参考价值。

block

===================================================

 

需要理解的知识

1.block基本使用

2.block传值

 

===================================

1.block基本使用

     block是一种数据类型,利用数据类型定义变量来保存block,效率高,需要定义变量保存.

 

 

     block用来封装代码,保存一段代码

     block的标志^

 

    block和函数相似:

    1可以保存代码 

    2有返回值 

    3有形参 

    4调用方式相似

 

   区别:函数编译时候就定义好了代码,block是程序运行过程中凭空产生代码

 

 

 

 

   1).如何定义block变量

         有参数,返回值类型为int

     int (^sumBlock)(int, int);

 

         当做参数的时候

     (int (^)(int, int)) sumBlock;

 

         无参数,返回值类型为空

     void (^myBlock)();

 

 

 

    2).如何利用block封装代码

^(int a, int b){

        return  a + b;

};

 

 

    3).block访问外部变量问题

           block内部可以访问外部的变量

         默认情况下,block内部不能修改外部的变量

         给局部变量加上__block关键字,这个局部变量就可以在block内部修改

 

    4).利用typedef定义block类型

      typedef  int (^MyBlock)(int, int);

           //以后就可以用MyBlock这种类型来定义block变量

 

  MyBlock sumBlock = ^(int a, int b){

       return a + b;

  };

 

  MyBlock minusBlock = ^(int a, int b){

          return a - b;

  };

 

  MyBlock multipyBlock = ^(int a, int b){

       return a * b;

  };

 

 

 

=============================

 

2.block传值

通过block传值可以实现回调

      block实现回调的过程:主动方调用被动方的方法,被动方再调用主动方的block

      【注】block由主动方实现,由被动方调用;主动方调用被动方的方法让被动方做事情。被动方回调主动方的block反馈结果

 

以上是关于OC_Block块的主要内容,如果未能解决你的问题,请参考以下文章

代码块(block)之函数体

一篇文章看懂iOS代码块Block

关于block块使用的6点注意事项

Block用法解析

IO通用块层中的block

IO通用块层中的block