黑马程序员技术交流社区

标题: block(代码段:用来保存一段代码) [打印本页]

作者: 池莉娘子    时间: 2015-7-11 14:27
标题: block(代码段:用来保存一段代码)
看一段代码:
#import <Foundation/Foundation.h>

int main()
{
        //不带参数的,不带返回值的block变量
       
     // 返回值  变量名  参数   变量值                所以这里的分号不能省略,对比int a = 19;
        void (^myblock) () = ^{NSLog(@"block练习");};
       
        //带参数和返回值的block       
        int (^sumblock)(int,int) = ^(int a,int b){
                return a+b;
        };
       
        //调用
       
        myblock();
        sumblock(10,12);
        return 0;
}

简单说明:
1.block是一种数据类型,相当于int,block的标志是^
2.block内部可以访问外面的变量,这也是它与函数的区别,但是默认情况下时不能修改外面的变量的,除非在定义变量时加上__block(两个下划线)
3.利用typedef定义block类型
typedef int (^Myblock)(int,int);
Myblock sumblock = ^(int a,int b){
                return a+b;
        };
4.block和函数类似
* 可以保存代码
* 可以有返回值
* 可以有形参
* 调用方式类似




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2