链式编程思维

        链式编程不得不先说下Masonry,之前的项目使用到自动布局,所以引用了Masonry这个库,感觉写这个库的写得特别好,能够将非常繁琐的布局代码使用一句代码实现:

make.right.equalTo(self.view.mas_right).with.offset(-15);

        像这种通过“点”语法,将需要执行的代码块持续执行,这就是链式编程,他能将代码简单块,使代码通俗易懂,书写方便

        像这样equalTo(self.view.mas_right) 通过“()”去调用函数,一般调用完返回的还是这个对象本身,就是函数式编程。

1、实现函数式 + 链式(无参)

UIView+Chained.h :

- (UIView *(^)())ch_toRed;

UIView+Chained.m :

- (UIView *(^)())ch_toRed {

     return ^() {

           self.backgroundColor = [UIColor redColor];

           return self;

     };

}

调用:

aView.ch_toRed();

2、实现函数式 + 链式(带参)

UIView+Chained.h :

- (UIView *(^)(CGFloat,CGFloat,CGFloat,CGFloat))ch_frame;

- (UIView *(^)(UIColor *))ch_backgroundColor;

UIView+Chained.m :

- (UIView *(^)(CGFloat, CGFloat, CGFloat, CGFloat))ch_frame {

          return ^(CGFloat x, CGFloat y, CGFloat width, CGFloat height) {

                 self.frame = CGRectMake(x, y, width, height);

                return self;

       };

}

- (UIView *(^)(UIColor *))ch_backgroundColor {

         return ^(UIColor *value) {

               self.backgroundColor = value;

              return self;

      };

}

调用:

aView.ch_frame(10,100,100,100).ch_backgroundColor([UIColor redColor]);

       链式编程的思维一般是以block作为返回参数,最终以对象本身返回,还有,链式编程书写的时候没有智能提示,所以可以编写一些宏来解决,最后,看看效果:


链式编程效果

转载于:https://juejin.im/post/5a34eb766fb9a045023bb5b2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值