美文网首页
iOS 链式编程

iOS 链式编程

作者: 阿文灬 | 来源:发表于2018-06-20 12:50 被阅读0次

本来想将题目取名为 masonry源码心得之链式编程 的。但想着想着没什么必要,我写文章主要目的是做笔记自己看的。
链式编程是OC中一种很好的设计模式。框架中使用链式编程,会让框架使用者感觉写的代码更加美观简洁。
Masonry是使用了该模式的框架,所以部分代码展示使用了Masonry。
让自己的代码越来越好:
1、多看设计模式与算法的书籍,提高认知。
2、多看一些好的框架源码(它们很好的运用了一些设计模式和算法),对自己的实践能力有很大的帮助。
3、对自己要求更高一点,多一点美的追求。

链式编程de效果

UIEdgeInsets padding = UIEdgeInsetsMake(10, 10, 10, 10);
[view1 mas_makeConstraints:^(MASConstraintMaker *make) {
    make.edges.equalTo(superview).with.insets(padding);
}];

链式编程de关键语法

链式编程使用的两个关键且常用的语法:点语法、block。

  • 点语法
    可作用于属性,也可作用于无参的方法。
  • block
    使用block作为方法返回值,即调用该方法则可以返回一个block。
    block可以定义任意类型的参数,也可定义返回值。
    block的返回值类型是所在方法所属的类型(值不一定是self)。
    关于block最好不要作为属性存在,随时爆发循环引用。或者你遇到block就使用weakSelf吧
@interface MASConstraint
- (MASConstraint *)left;
- (MASConstraint * (^)(id attr))mas_equalTo;
@end

使用链式编程de SegmentBar

估计大家都封装过一个 SegmentBar:segmentBar简单示例code

  • 不使用链式编程de效果
    这里如果想再次更改 config,则需要将config暴露出去。
// 主要代码
@interface LWSegmentBarConfig : NSObject
@property (nonatomic, strong) UIColor *itemNormalColor;
@property (nonatomic, strong) UIColor *itemSelectColor;
@end

// 使用演示
LWSegmentBarConfig *config = [LWSegmentBarConfig new];
config.itemNormalColor = [UIColor lightGrayColor];
config.itemSelectColor = [UIColor blueColor];
...属性很多

LWSegmentBar *bar = [LWSegmentBar segmentBarWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 64) segmentBarConfig:config];
  • 使用链式编程de效果
// 主要代码
@interface LWSegmentBarConfig : NSObject
- (LWSegmentBarConfig *(^)(UIColor *color))lw_itemNormalColor;
- (LWSegmentBarConfig *(^)(UIColor *color))lw_itemSelectColor;
@end

@implementation LWSegmentBarConfig
- (LWSegmentBarConfig *(^)(UIColor *color))lw_itemNormalColor {
    return ^(UIColor *color) {
        self.itemNormalColor = color;
        return self;
    };
}

- (LWSegmentBarConfig *(^)(UIColor *color))lw_itemSelectColor {
    return ^(UIColor *color) {
        self.itemSelectColor = color;
        return self;
    };
}
@end

// 使用演示
LWSegmentBar *bar = [XMGSegmentBar segmentBarWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 64)];
[bar lw_updateConfig:^(LWSegmentBarConfig *config) {
    config.lw_itemNormalColor([UIColor lightGrayColor]).lw_itemSelectColor([UIColor blueColor]);
}];

相关文章

  • 工作iOS技术总结

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

  • ReactiveObjC入门

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

  • 链式编程总结

    链式编程总结 @(iOS) 研究了一下链式编程,但是感觉项目中用处不是很多。 介绍 1.什么时候使用链式编程?在面...

  • iOS 链式编程简单的使用

    iOS 链式编程简单的使用 链式编程-顾名思义,链式,连贯性为其主要特征,放在编程领域来讲,说简单点就是把一系列的...

  • iOS-链式编程思想

    在iOS中,链式编程虽然用的不太多,但是,在特定的应用环境下,利用block实现链式编程的话,会大大的提高编程效率...

  • iOS链式编程

    在iOS中,链式编程虽然用的不太多,但是,在特定的应用环境下,利用block实现链式编程的话,会大大的提高编程效率...

  • iOS链式、函数式和响应式编程

    原文编程思想-iOS链式、函数式和响应式编程 在了解链式、函数式和响应式编程前,我们需要回顾下Block,它在下面...

  • iOS 链式编程

    本来想将题目取名为 masonry源码心得之链式编程 的。但想着想着没什么必要,我写文章主要目的是做笔记自己看的。...

  • iOS链式编程

    在上篇我介绍了一下Masonry使用:https://www.jianshu.com/p/894816db541c...

  • iOS链式编程

    谈到链式编程和函数式编程, Masonry就是最经典的代表, 没事可以多看看它的源码。例如:make.top.eq...

网友评论

      本文标题:iOS 链式编程

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