进击的KFC:链式编程

链式编程:
1.链式编程思想:是将多个操作(多行代码)通过点号(.)链接在一起成为一句代码,使代码可读性好。a(1).b(2).c(3)
2.链式编程特点:方法的返回值是block,block必须有返回值(本身对象),block参数(需要操作的值)
代表:Masonry框架、SDAutoLayout框架(相对于前一个比较简单易理解)

首先我们自定义一个类 : Person 类

它存在一些基本属性:
@property (copy, nonatomic, readonly) NSString *name;
@property (copy, nonatomic, readonly) NSString *age;
@property (copy, nonatomic, readonly) NSString *height;
// Objective-C中实现链式编程主要是通过Block来实现
// 所以 可以 设置 对应属性的, 有返回值,有参数的block 的 链式方法
- (Person *(^)(NSString *aName))p_name;
- (Person *(^)(NSString *aName))p_age;
- (Person *(^)(NSString *aName))p_height;

如果对于block 不理解的,可以看一下这篇文章,解释的蛮详细的
http://www.jianshu.com/p/649fca982c6e

// 构造方法:能够快速创建一个Person对象,在一个参数为block的方法中一次性设置好你需要的Person对象
+ (Person *)makePersonObject:(void(^)(Person *object))block;
方法实现:
- (Person *(^)(NSString *aName))p_name{

    return ^id(NSString *aName){
        _name = aName; // 给对应的属性 赋值
        return self; // 再把本类对象 返回出去,继续调用.号
    };

}
- (Person *(^)(NSString *aName))p_age{
    return ^id(NSString *aName){
        _age = aName;
        return self;
    };
}
- (Person *(^)(NSString *aName))p_height{
    return ^id(NSString *aName){
        _height = aName;
        return self;
    };

}

// 构造方法:能够快速创建一个Person 对象
+ (Person *)makePersonObject:(void(^)(Person *object))block{

    Person *person = [[Person alloc] init];
    block(person);
    return person;
}
具体使用:
[Person makePersonObject:^(Person *object) {

        object.p_name(@"张三").p_age(@"23").p_height(@"180");
        NSLog(@"%@",object);

    }];

打印结果:
这里写图片描述

总结:
链式编程要返回自身,每一个链式方法都必须返回明确的类型才能一直 . 下去 ; 利用链式语法,我们可以实现很多巧妙的实例调转,而开发者无需关心此时是调用了哪个实例的方法。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值