iOS链式编程之block作为返回值使用

链式编程近几年算是一个比较火的概念了,使用过masonry的人应该也比较熟悉链式编程这个概念,那么,在iOS中是怎么实现链式编程的呢?其实iOS的链式编程一般都是使用block作为返回值这种方法来实现的,现在我在这边为大家简单介绍下block作为返回值的简单使用。

首先,我们先创建一个Person类,写一个方法,返回值是一个没返回值没参数的block:

- (void (^)())walk;
//实现
- (void(^)())walk{
    return ^(){
        NSLog(@"走起");
    };
}

之后我们可以调用这个方法,用点语法(只要符合系统默认setter、getter书写格式的方法都可以使用点语法)来调用这个方法

Person *person = [Person new];
person.walk();

看看打印:


image.png

之后,我们可以写一个返回的是一个返回值是Person类,参数是int的block的方法:

- (Person *(^)(int))eat;
- (Person *(^)(int))sleep;

//实现
- (Person *(^)(int))eat{
    return ^(int dun){
        NSLog(@"吃了%d顿",dun);
        return self;
    };
}

- (Person *(^)(int))sleep{
    return ^(int minute){
        NSLog(@"又睡了%d分钟",minute);
        return self;
    };
}

通过上面的写法,person可以无限的调用eat以及sleep方法,因为这2个方法返回的都是person类本身,还可以传入block的参数,我们还可以通过这个用法来修改对应类的变量,使之写起来有种链式的感觉,调用后:

 Person *person = [Person new];
 person.eat(10).sleep(20).eat(30).sleep(100);

看看打印:

image.png

是不是有点链式编程的感觉了呢?

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 转自Objective-C 链式编程最近看到了链式编程和函数式编程这两个概念,网上查了一些资料,但是发现资料都千篇...
    飞雨2013阅读 4,237评论 1 1
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,810评论 19 139
  • 本文略为全面的介绍block的使用:block定义方式,block传值,block循环引用,block内存管理,b...
    王技术阅读 8,296评论 13 39
  • 之前有一段时间潜伏在各个社交软件,几乎每天都是为了这些社交软件而活,找不到喘息的空间以至于荒废了我的考试复习计划!...
    啤酒与故事_阅读 1,738评论 0 0
  • 人生起落乃为常态,就好似文天祥的一句诗“身世浮沉雨打萍。”是啊,我们便如池中的浮萍在这世间浮沉。我们若能笑对如此,...
    清尘cold_wind阅读 1,769评论 0 1

友情链接更多精彩内容