OC总结——block语法

       


一、block语法

        1Block定义:

        block:块语法,本质上是匿名函数。与函数指针很相似:int*)(int xint y

        int (^myblock)(int) = ^(int num){return num * 7;};

        具体详解:

        Block类型:int(^)(int)

        Block变量:myblock

        Block的值:^int (int num){return num * 7;}即:^返回值类型(参数列表){函数体},其中返回值类型可以省略

        int :myblock是块对象,返整型值

        (^myblock): ^符号将myblock声明为一个块对象

        (int): 它有一个参数,参数的类型也是整型值

        ^(int num): 参数的名称是num

        {}: {}内是块对象的主体部分(具体的块语法实现内容)

        ^(int num){return num * 7;}: 这是定义块对象昂的语法结构,这部分就是赋值给myblock变量的值。

        

        2block语法的使用:

        int num = 1;

        int (^block1)(int x, int y) = ^(int x, int y){

            return x + y;

        };

        int a = block1(1, 5);

        

        Block进行typedef

        typedef int(^BlockType) (int x, int y);

        原类型: int(^)(int x, int y)

        新类型: BlockType

        上面block1的新写法:

        BlockType block1 = ^(int x, int y){

            return x + y;

        };

        

        Block与局部变量:

        block内部不能修改局部变量,可以访问局部变量。eg:num

        __block 修饰后,在block内部可以改变局部变量(MRC和ARC中均可)eg: _block int num = 1;

        __weak 修饰后, 也可以起到相同的作用(用于ARC中)


        

        Block与全局变量:

        block块语法中可以访问全局变量,并且可以修改全局变量


        3block实现数组排序

、我对block的理解:

  虽然我倒现在还是很少使用block, 不过我觉得block的作用就是帮助我们, 保存一个方法, 在特定的时候去使用它, 使用block的时候, 一定要注意循环引用!!!




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值