iOS链式编程

作者: 十一月三号 | 来源:发表于2016-02-23 14:07 被阅读1117次

在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技术总结

    链式编程、函数式、面向接口编程思想 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/cvibkttx.html