美文网首页
链式编程

链式编程

作者: 西门丨不吹雪 | 来源:发表于2017-05-03 17:06 被阅读34次

    最近有时间看了下Masonry的实现原理,大家都知道Masonry就是经典的链式编程思想

    void(^block)(MASConstraintMaker *maker) = ^(MASConstraintMaker *make) {
        // 描述控件的所有约束
        make.left.top.equalTo(@10);
        make.right.bottom.equalTo(@(-10));
    };
    
    // 参数:block
    [redView mas_makeConstraints:block];
    
     mas_makeConstraints作用:给控件设置布局,把控件的所有约束保存到约束制造者中  ---- (NSArray *)mas_makeConstraints:(void(^)(MASConstraintMaker *))block
     
     1.创建一个约束制造者
     2.调用block(maker),把所有的控件的约束全部保存到约束制造者
     3.[constraintMaker install]:遍历约束制造者的所有约束给控件添加约束
    

    链式编程小练习

    1.创建XMCaculatorMaker文件,计算器maker类
    2.定义计算结果属性
    3.定义加法运算方法

    #import <Foundation/Foundation.h>
    
    @interface XMCaculatorMaker : NSObject
    
    @property (nonatomic, assign)int result;
    
    -(XMCaculatorMaker *(^)(int num))add;
    
    @end
    
    
    #import "XMCaculatorMaker.h"
    
    @implementation XMCaculatorMaker
    
    -(XMCaculatorMaker *(^)(int num))add
    {
        return ^(int num){
            _result = _result + num;
            return self;
        };
    }
    

    创建NSObject分类,所有它的子类都可调用

    #import <Foundation/Foundation.h>
    #import "XMCaculatorMaker.h"
    
    @interface NSObject (XMCaculaterMaker)
    
    以后计算都使用这个方法,一调用这个方法就返回结果
    -(int)makeCaculater:(void(^)(XMCaculatorMaker *maker))block;
    
    @end
    
    
    #import "NSObject+XMCaculaterMaker.h"
    
    @implementation NSObject (XMCaculaterMaker)
    
    -(int)makeCaculater:(void (^)(XMCaculatorMaker *maker))block
    {    
        创建制造者
        XMCaculatorMaker *maker = [[XMCaculatorMaker alloc] init];
        NSLog(@"%@",maker);
        block(maker);
        return maker.result;
    }
    

    调用,进行计算

    NSObject *object = [[NSObject alloc]init];
    
    block:使代码高聚合
    [object makeCaculater:^(XMCaculatorMaker *maker) {
        把所有的计算代码封装到这里
        NSLog(@"-----%@",maker);
        maker.add(10).add(20);
    }];
    

    总结

    • 之前开发中比较习惯,把事情封装到一个方法中

    • 链式编程思想:把要做的事情封装到block,给外界提供一个返回这个Block的方法

    • 链式编程思想方法特点:
      1.方法返回值必须是block
      2.block参数:放需要操作的内容
      3.block返回值:方法调用者

    相关文章

      网友评论

          本文标题:链式编程

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