码迷,mamicode.com
首页 > 其他好文 > 详细

OC_Block块

时间:2016-03-04 22:42:04      阅读:297      评论:0      收藏:0      [点我收藏+]

标签:

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块

标签:

原文地址:http://www.cnblogs.com/yuhanchen/p/5243431.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!