美文网首页
ios开发-链式编程

ios开发-链式编程

作者: 隔壁班小明 | 来源:发表于2018-07-12 18:56 被阅读146次

什么是链式编程,我看到这个东西第一反应,这不就是一个装饰模式嘛,其实我的理解,链式编程就是一个写法特别的装饰模式,具体怎么特别呢。他用“.”来链接各个代码块,大家最熟悉的应该就是现在特别火的masonry了(虽然我还是用frame。。)

[view mas_makeConstraints:^(MASConstraintMaker *make) {
        make.top.left.bottom.and.right.equalTo(@(0));//这句就是了
    }];

这种写法的好处呢,看起来清晰明了,,不过masonry太难懂了,我找了好几个链式编程的代码,最后自己写了一个,非常简单,方便大家入门。

先来一个h文件放定义的block(忘了说了链式编程的代码块是使用block实现的)-文件名LinkBlocks.h

@class LinkLabel;

typedef LinkLabel *(^MakeFrame)(CGRect frame);
#define MakeFrame(frame) ^LinkLabel *(CGRect frame)

typedef LinkLabel *(^MakeBackgroundColor)(UIColor * color);
#define MakeBackgroundColor(color) ^LinkLabel *(UIColor * color)

接下来写一个label,就举个例子我就只写两个属性了,懒死了

h文件

#import <UIKit/UIKit.h>
#import "LinkBlocks.h"

@interface LinkLabel : UILabel
/** frame */
@property (nonatomic, copy) MakeFrame makeFrame;
/** backgoundcolor */
@property (nonatomic, copy) MakeBackgroundColor makeColor;

+(instancetype)labelinitWith:(void (^)(LinkLabel *make)) initblock;

@end
m文件
#import "LinkLabel.h"

@implementation LinkLabel

+(instancetype)labelinitWith:(void (^)(LinkLabel *make)) initblock{
    LinkLabel *lable = [[LinkLabel alloc] init];
    if (initblock) {
        initblock(lable);
    }
    return lable;
}

-(MakeFrame)makeFrame{
    return MakeFrame(frame){
        self.frame = frame;
        return self;
    };
}

-(MakeBackgroundColor)makeColor{
    return MakeBackgroundColor(color){
        self.backgroundColor = color;
        return self;
    };
}

@end

最后来个使用

LinkLabel * label = [LinkLabel labelinitWith:^(LinkLabel *make) {
        make.makeFrame(CGRectMake(100, 100, 100, 30)).makeColor([UIColor yellowColor]);
    }];
    label.text = @"link label";
    [self.view addSubview:label];

好啦,打完收工。大家有什么问题,咱们一起讨论

相关文章

  • ReactiveObjC入门

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

  • ios开发-链式编程

    什么是链式编程,我看到这个东西第一反应,这不就是一个装饰模式嘛,其实我的理解,链式编程就是一个写法特别的装饰模式,...

  • 工作iOS技术总结

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

  • iOS开发Masonry框架源码解析

    iOS开发Masonry框架源码解析 前言:这个框架编程思想主要包括链式编程 这是一个iOS在控件布局中的轻量级框...

  • RAC学习详解

    Block开发基础知识 链式编程思想简介 响应式编程思想简介 函数式编程思想简介 参考资料 iOS 关于MVC和M...

  • 链式编程总结

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

  • 使用链式编程开发iOS

    有一句话叫三人行必有我师,其实作为一个开发者有一个学习的氛围跟一个交流圈子特别重要,这是我的一个iOS交流群686...

  • iOS开发之链式编程

    很多小伙伴在开发的过程当中会见到一个很神秘的词--链式编程,那么到底什么是链式编程,链式编程到底有什么神奇之...

  • iOS开发 - 链式编程思想

    因为有 Masory 以及 Snapkit 这些知名开源库的存在,相信很多 iOS 开发者对链式编程都不会太陌生,...

  • iOS 链式编程简单的使用

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

网友评论

      本文标题:ios开发-链式编程

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