美文网首页
链式编程

链式编程

作者: RichieQ | 来源:发表于2018-12-21 15:46 被阅读0次

一、原理

首先获得实例中的一个block,然后执行block并返回实例本身,然后再执行实例的另一个block,而在这个block中同样返回实例本身,按此规律通过点语法一直往下执行

二、代表库

1、SDAutoLayout 基于frame自动布局方式
2、BabyBluetooth 基于原生CoreBluetooth框架封装的轻量级开源库
3、Masonry 基于原生NSLayoutConstraints约束封装的轻量级开源库
4、等等

三、例子摘自SDAutoLayout部分代码

1、block

typedef SDAutoLayoutModel *(^MarginToView)(id viewOrViewsArray, CGFloat value);

2、类

@interface SDAutoLayoutModel : NSObject
/** 左边到其参照view之间的间距,参数为“(View 或者 view数组, CGFloat)”  */
@property (nonatomic, copy, readonly) MarginToView leftSpaceToView;
/** 顶部到其参照view之间的间距,参数为“(View 或者 view数组, CGFloat)”  */
...
@end

@implementation SDAutoLayoutModel

- (MarginToView)leftSpaceToView
{
    if (!_leftSpaceToView) {
        _leftSpaceToView = [self marginToViewblockWithKey:@"left"];
    }
    return _leftSpaceToView;
}

- (MarginToView)marginToViewblockWithKey:(NSString *)key
{
    __weak typeof(self) weakSelf = self;
    return ^(id viewOrViewsArray, CGFloat value) {
        SDAutoLayoutModelItem *item = [SDAutoLayoutModelItem new];
        item.value = @(value);
        if ([viewOrViewsArray isKindOfClass:[UIView class]]) {
            item.refView = viewOrViewsArray;
        } else if ([viewOrViewsArray isKindOfClass:[NSArray class]]) {
            item.refViewsArray = [viewOrViewsArray copy];
        }
        [weakSelf setValue:item forKey:key];
        return weakSelf;
    };
}
...
@end

3、调用

SDAutoLayoutModel *model = [SDAutoLayoutModel new];
model.leftSpaceToView(view, 10)
     .topSpaceToView(view, 16);

相关文章

  • jQuery 链式编程

    jQuery 链式编程 链式编程原理 链式编程代码示例 隐式迭代

  • 链式编程思想

    链式编程思想 链式编程思想

  • iOS 链式编程

    链式编程 主要介绍链式编程原理,以及如何创建链式编程 编程范式 在介绍链式编程之前,首先来了解下什么是编程范式。 ...

  • ReactiveObjC入门

    ReactiveObjC基础用法 iOS开发三种编程方式(响应式编程、函数编程、链式编程),函数编程最常用,链式编...

  • 工作iOS技术总结

    链式编程、函数式、面向接口编程思想 iOS 之ReactiveCocoa 链式编程2 WKWebView的缓存处理...

  • 一、链式编程思想、响应式编程思想和函数式编程

    1. 链式编程思想 链式编程思想的核心就是方法的返回值必须是Block,Masonry是链式编程思想应用的代表。 ...

  • 链式编程和函数式编程的简单理解

    链式编程 此前看到SnipKit中运用了很多链式编程的代码,感觉非常好用:例如: //此段就是链式编程的典型代码m...

  • 编程思想-链式编程

    编程思想-链式编程 链式编程(链式调用)的主要表现是支持点语法结构的代码,代表库可以参照 Masonry 或 Sn...

  • 链式编程

    链式编程

  • iOS 链式编程

    之前看到 Masonry 是使用链式编程,感觉很酷,自己简单的写了一个链式编程的示例! 首先简单的来说一下链式编程...

网友评论

      本文标题:链式编程

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