block开发中使用场景

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的书写格式的快捷方式,可直接敲inlineBlock,如下图: 一、block的声明、定义 如果...
    小胖子2号阅读 2,622评论 0 1
  • block开发中使用场景 1.把block保存到对象中,恰当时机的时候才去调用 2.把block当做方法的参数使用...
    yangfei02821阅读 1,566评论 0 0
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,327评论 25 709
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,384评论 19 139
  • 我是一个喜欢怀旧的人,但我的怀旧,并不是想让自己活在过去的时光里,也不是要花大量时间去追忆,那些逝去的人、物与事。...
    梁金龙聊知识管理阅读 6,291评论 6 15