美文网首页
Block的三种使用场景

Block的三种使用场景

作者: 蚂蚁牙齿不黑 | 来源:发表于2016-04-04 12:34 被阅读579次

    iOS block介绍

    block因其古怪的语法结构所以看上去比较蛋疼,比较难记,还好工作中忘记怎么写了是有技巧的等下会说,block的所用就是帮你保存一份代码然后再恰当的时候调用,返回你所需要的“值”(没想到词,就用它吧,对block做了以下总结,做下笔记

    如何声明及实现一个block 看图

    忘记写法可以试试.png
    定义无返回值 无参数的block
        //  无返回值  无参数
        void(^block01)() = ^(){
            
            NSLog(@"01-无返回值  无参数的block");
        };
        
        block01();
    
    定义无返回值 有参数的block
        //  无返回值  有参数(int 类型)
        void(^block02)(int) = ^(int age){
          
            NSLog(@"%d",age);
        };
        
        //  传入一个参数
        block02(20);
    
    定义有返回值有参数的block
        //   有返回值  有参数
        int(^block03)(int) = ^(int num){
         
            NSLog(@"03-有返回值  有参数的block  num:%d",num);
            
            return 100;
        };
        
       int temp = block03(200);
        
        NSLog(@"03-有返回值  有参数的block temp:%d",temp);
    

    打印结果都在这里了

    打印结果.png

    好 开始介绍第一种block 把一段block代码当做**对象的属性值 以Person类为例

    以operAtion(操作)为属性

    定义属性
    Paste_Image.png
        //  开发中第一种使用场景  将block保存到对象中
     
        self.p.operAtion = ^(){
            NSLog(@"02-将block当做属性值保存起来");
        };
        
        
        //  第二种写法
        void(^block03)() =^(){
        
            NSLog(@"03-将block当做属性值保存起来");
        };
    
        self.p.operAtion = block03;
    
    在你认为合适的时刻调用这个属性 也就是封装的这段block代码
    Paste_Image.png

    第二种block 把block当做方法的参数 也是最常用的写法

    定义一个带有block的函数


    Paste_Image.png

    实现这个函数

    /**
     *  实现方法
     *
     *  @param block  在方法内部调用block
     */
    -(void)eat:(void (^)(int))block{
    
        NSLog(@"此处可封装N多代码  返回值可通过block的参数回调到外界   此处以 int 为例");
        
        block(5);
    }
    

    外界调用这个方法

        //  开发中第二种使用场景  将block作为方法的参数  在方法内部调用这个block
        Person *p = [[Person alloc]init];
        
        [p eat:^(int count){
            NSLog(@"吃了%d个馒头",count);
        }];
    
    Paste_Image.png

    第三种block 把block当做方法的返回值 符合链式编程思想

    定义这个方法
    Paste_Image.png
    实现这个方法
    Paste_Image.png
    外界调用
    Paste_Image.png
    打印结果
    Paste_Image.png

    相关文章

      网友评论

          本文标题:Block的三种使用场景

          本文链接:https://www.haomeiwen.com/subject/sqgulttx.html