美文网首页
block开发中使用场景

block开发中使用场景

作者: 大虾咪 | 来源:发表于2017-03-30 15:40 被阅读12次

block 开发中使用场景 适合新手理解 熟悉 运用到项目中

block开发中使用场景

// 1.把block保存到对象中,恰当时机的时候才去调用

// 2.把block当做方法的参数使用,外界不调用,都是方法内部去调用,Block实现交给外界决定.

// 3.把block当做方法的返回值,目的就是为了代替方法.,block交给内部实现,外界不需要知道Block怎么实现,只管调用

1.把block保存到对象中,恰当时机的时候才去调用

- (void)block1
{
    Person *p = [[Person alloc] init];
    void(^block)() = ^() {
        NSLog(@"执行对象中block");
    };
    p.operation = ^(){ 
        NSLog(@"执行对象中block");
    };
    p.operation = block;
    _p = p;
}
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
    _p.operation();
}

2.把block当做方法的参数使用,外界不调用,都是方法内部去调用,Block实现交给外界决定.

- (void)block2
{
    Person *p = [[Person alloc] init];
    void(^block)() = ^{
        NSLog(@"吃东西");
    };
    [p eat:block];
    // 传入block给参数的Block赋值
    [p eat:^{
        NSLog(@"吃东西");
    }];
}

person:
- (void)eat:(void (^)())block
{
    /**
    block = ^{
        NSLog(@"吃东西");
    };
     */
    block();
}

3.把block当做方法的返回值,目的就是为了代替方法.,block交给内部实现,外界不需要知道Block怎么实现,只管调用

- (void)block3
{
    Person *p = [[Person alloc] init];
    
    [p run:2];

    p.run(2);
    void(^run)() = p.run;
    run();
}

Person:
- (void (^)(int))run
{
    return ^(int meter){
        NSLog(@"跑了%d米",meter);
    };
}

相关文章

  • block开发中使用场景

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

  • Block开发中使用场景

    小技巧:block的书写格式的快捷方式,可直接敲inlineBlock,如下图: 一、block的声明、定义 如果...

  • Block开发中使用场景

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

  • Block的三种应用场景

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

  • Objc Block实现分析

    Objc Block实现分析 Block在iOS开发中使用的频率是很高的,使用的场景包括接口异步数据的回调(AFN...

  • @strongify@weakify

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

  • iOS开发中将block作为参数、属性使用

    开发中使用block进行回调传递消息、传递参数还是很方便的。 使用场景 1.使用一个网络请求工具进行某个页面的网络...

  • 10--Block原理

    一、Block类型 我们平时在开发中使用的到的Block主要有三种类型: __NSGlobalBlock__:全局...

  • Block的常用场景

    本文简介 本文主要是总结了block在开发中的几种常用场景,如有不足的地方,还望指正。 Block简介 Block...

  • block开发使用场景

    block传值 利用block去代理代理传值 1. 代理传值 点击当前控制器Viewcontroller利用mod...

网友评论

      本文标题:block开发中使用场景

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