美文网首页
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三种使用场景

    使用场景 block代码块保存在对象属性之中,等到时机成熟调用(外界界定block内容,block外部调用) 当做...

  • Block的三种使用场景

    iOS block介绍 block因其古怪的语法结构所以看上去比较蛋疼,比较难记,还好工作中忘记怎么写了是有技巧...

  • block开发中使用场景

    block 开发中使用场景 适合新手理解 熟悉 运用到项目中 block开发中使用场景 1.把block保存到对象...

  • iOS block 为什么官方文档建议用 copy 修饰

    一、block 的三种类型block 三种类型:全局 block,堆 block、栈 block。全局 block...

  • Block使用场景

    引言 最近在研究RAC的时候,发现绝大部分代码实现如下所示: 可以发现是block嵌套使用,这是使用block实现...

  • @strongify@weakify

    @strongify以及@weakify宏命令的使用场景和原理 主要是在block中使用 (因为block一般都在...

  • block的简单使用

    block的使用场景 1.把block保存到对象中,恰当时机的时候才去调用2.把block当做方法的参数使用,外界...

  • Block的三种应用场景

    block开发中使用场景1.把block保存到对象中,恰当的时候才去调用2.把block当做方法的参数使用,外界不...

  • Block开发中使用场景

    block开发中使用场景 1.把block保存到对象中,恰当时机的时候才去调用 2.把block当做方法的参数使用...

  • __block底层原理详解

    _我们先通过一个小场景,开始今天的主题. 一:__block的本质 我们把使用__block修饰的的block转换...

网友评论

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

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