iOS链式编程

在iOS中,链式编程虽然用的不太多,但是,在特定的应用环境下,利用block实现链式编程的话,会大大的提高编程效率,并且代码直观易读。
初次接触链式编程是在Masonry中,不得不承认那种写法看起来十分直观,调用起来也很简单。
下边我会用一个例子来对比一下日常编程方式和链式编程。

/**
 * 日常编程方式
 */
#import <UIKit/UIKit.h>

@interface CustomView : UIView

// 设置View的大小及位置
- (void)setViewFrame:(CGRect)frame;

// 设置View的颜色
- (void)setViewColor:(UIColor *)color;

@end

实现:

- (void)setViewFrame:(CGRect)frame {
    self.frame = frame;
}

- (void)setViewColor:(UIColor *)color {
    self.backgroundColor = color;
}

调用:

- (void)viewOption {
    CustomView *customView = [[CustomView alloc] init];
    [customView setViewFrame:CGRectMake(165, 300, 100, 100)];
    [customView setViewColor:[UIColor cyanColor]];
    [self.view addSubview:customView];
}

实现效果:

实现效果

下面,我们使用链式编程实现

#import <UIKit/UIKit.h>

@interface CustomView : UIView

/**
 *  设置View的大小及位置
 */
- (CustomView *(^)(CGRect))viewFrame;

/**
 *  设置View的颜色
 */
- (CustomView *(^)(UIColor *))ViewColor;

/**
 *  仿造Masonry
 *
 *  @param block 对View的处理
 *
 *  @return UIView
 */
+ (UIView *) makeCustomView:(void (^)(CustomView *))block;

@end

实现:

- (CustomView *(^)(CGRect))viewFrame {
    return ^CustomView *(CGRect frame) {
        self.frame = frame;
        return self;
    };
    
}

- (CustomView *(^)(UIColor *))ViewColor {
    return ^CustomView *(UIColor *color) {
        self.backgroundColor = color;
        return self;
    };
}

+ (UIView *)makeCustomView:(void (^)(CustomView *))block {
    CustomView *view = [[CustomView alloc] init];
    block(view);
    return view;
}

调用:

- (void)viewOption {
    UIView *customView = [CustomView makeCustomView:^(CustomView *custom) {
        custom.viewFrame(CGRectMake(165, 300, 100, 100)).ViewColor([UIColor cyanColor]);
    }];
    [self.view addSubview:customView];
}

最后结果和日常书写方式实现相同,但是在调用上更加清晰直观。
ben li

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在iOS中,链式编程虽然用的不太多,但是,在特定的应用环境下,利用block实现链式编程的话,会大大的提高编程效率...
    顶级蜗牛阅读 661评论 1 4
  • 链式编程的介绍与Masonry 首先看一下OC下使用优秀第三方框架Masonry在实现一个自动布局时候的实现代码:...
    子斌阅读 761评论 0 1
  • iOS 链式编程简单的使用 链式编程-顾名思义,链式,连贯性为其主要特征,放在编程领域来讲,说简单点就是把一系列的...
    熊猫小贼_阅读 676评论 0 4
  • 什么是链式编程,大家第一印象可能是链条⛓,个人喜欢乐高Lego一环扣一环,不需要按顺序进行连接,每一个环就是一个组...
    chouson_chan阅读 680评论 0 4
  • 链式编程 Masonry 打点调用原理之前一直好奇Masonry 框架是怎样实现的,可以一直打点调用,语法使用起来...
    钢铁少侠阅读 543评论 3 1