美文网首页
对 block(回调函数) 的一点理解

对 block(回调函数) 的一点理解

作者: 魔君001 | 来源:发表于2019-05-16 14:43 被阅读0次

注:工作中的一点总结


  • 简化block 定义,以便更加方便的使用
    typedef int(^MyBlock)(int, int);

  • block 的简单使用
    1 作为属性使用
    @property (nonatomic,copy)MyBlock block;
    2 我们开发中用到的最多就是传值
    例:假如我们有一个这样需求:A push 到 B 页面,我们需要B页面返回 A 页面时,修改A页面的背景色,或者一些其他的操作。

    实现方法

    我们在 B页面声明一个block,作为参数
    @property (nonatomic, copy) void(^colorBlock)(UIColor *color);
    注:站在 c 语言的角度看block ,其实block 本质就是一个匿名函数,这里使我们有时候经常忽略的一点,导致自己定义的block出问题,这里做一个简单记录。因block 本质是一个函数,当我们定义了它的时候,我们想要监控block内部代码的逻辑,那么我们必须调用函数,这样才能进入到函数的内部。但是我们在用block 的时候又是经常忘记这步,也就是block 调用的步骤
    block 的调用

    if (self.colorBlock) {
          self.colorBlock(color);// 回调函数的调用
    } 
    

    既然有了调用,那么我们就得有block的具体实现了,也就是我们想要做的操作

    我们在 A 页面 实现 block 的具体操作(这里只是修改下背景色)

    // 首先创建 B对象
    B = [[B alloc] init];
    // 调用B 里面的block属性,并实现
    B.colorBlock = ^(UIColor *color){
      // A 页面的背景色设置
    }
    

二 block 作为某个方法的参数 这是我们经常忽略的一点
假如我们写了一个方法:
CreateControllerWithBlock:(colorBlock)block

    b = [[B alloc] init]
    [b CreateControllerWithBlock:^(UIColor *color){
        // block 里面代码的实现操作
    }]

当我们调用这个方法时,我们调用这个方法时,有时会忘记block的工作原理,或者忽略block,从而导致必不能理想办的进入到block函数里面,这点和我们上述提到的其实是同一个问题

注:核心,不管block是作为参数还是属性,要想执行block面的内容,那么必须得有block的对应的调用部分才可以。

假如对block仍有疑惑,或者很感兴趣,可以去看block 的具体实现以及本质,这里只是做了一个简单的记录。

相关文章

  • 对 block(回调函数) 的一点理解

    注:工作中的一点总结 简化block 定义,以便更加方便的使用typedef int(^MyBlock)(int,...

  • Block学习

    block和函数指针的理解; 相似点 函数指针和Block都可以实现回调的操作,声明上也很相似,实现上都可以看成是...

  • Block(回调函数)

    概念:Block就是一个函数体(匿名函数),它是ObjC对于闭包的实现,在块状中我们可以持有或引用局部变量 Blo...

  • block基础-1

    block块是在ios4开始,就出现了。block实质就是C语言的回调函数。block函数定义如下 void (^...

  • iOS中block的用法

    定义block类型 定义block块,代码更清新 函数中定义block回调的方法 持续补充中......

  • UI(二十)block

    *block代码块 闭包(一个区域)与C语言函数类似 *block具有反向传值、回调的功能 回调:执行完毕之后返回...

  • 系统的不带参数的block

    dispatch_block_t 简单的实现不带参数的回调函数

  • iOS - block

    *block代码块闭包(一个区域)与C语言函数类似 *block具有反向传值、回调的功能 回调:执行完毕之后返回再...

  • 谈谈Block和代理区别和联系

    代理和block的共同特性是回调机制 Block: 1 写法简练,不需要写protocol/函数等、2 block...

  • JavaScript - 回调函数

    这里我想跟你聊聊我理解的回调函数(callback)。 回调函数,我觉得可以理解成作为参数传递的函数对象。因为在 ...

网友评论

      本文标题:对 block(回调函数) 的一点理解

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