A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

看一段代码:
#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和函数类似
* 可以保存代码
* 可以有返回值
* 可以有形参
* 调用方式类似

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马