美文网首页
iOS 链式编程思想(仿Masonry写的计算管理类)

iOS 链式编程思想(仿Masonry写的计算管理类)

作者: imwudi | 来源:发表于2016-08-04 19:56 被阅读176次

前言:Masonry这个做约束的第三方框架,想必是大家都用过,一连串的约束在一句话完成,显得十分简洁优美,所以我来使用Masonry的链式编程写思想写一个计算管理类。

链式编程写思想的核心是:写一个用返回类型是本类的block作为返回类型的方法。

读起来有点绕口,下面直接上代码。

Masonry是让所有UIVIEW都能创建约束,所以写了一个UIVIEW的分类,那么我想让所有对象都能计算,所以创建一个NSObject的分类NSObject+Calculate

#import <Foundation/Foundation.h>
@interface NSObject (Calculate)

- (NSInteger)wd_makeCalculate:(void (^)(CalculateManager *))calculateManager;

@end
@implementation NSObject (Calculate)

- (NSInteger)wd_makeCalculate:(void (^)(CalculateManager *))block {
    CalculateManager *calculateManager = [[CalculateManager alloc] init];
    block(calculateManager);
    return calculateManager.result;
}

@end

在分类中的我们使用了计算管理类CalculateManager

#import <Foundation/Foundation.h>

@interface CalculateManager : NSObject

@property (nonatomic,assign) NSInteger result;

- (CalculateManager *(^)(int num))add;

- (CalculateManager *(^)(int num))sub;

- (CalculateManager *(^)(int num))multiple;

- (CalculateManager *(^)(int num))divide;

@end
@implementation CalculateManager

- (CalculateManager *(^)(int num))add {
    return ^(int num){
        _result += num;
        return self;
    };
}

- (CalculateManager *(^)(int num))sub {
    return ^(int num){
        _result -= num;
        return self;
    };
}

- (CalculateManager *(^)(int num))multiple {
    return ^(int num){
        _result *= num;
        return self;
    };
}

- (CalculateManager *(^)(int num))divide {
    return ^(int num){
        _result /= num;
        return self;
    };
}

@end

下面我们就能用他来做计算了

NSInteger result = [NSObject wd_makeCalculate:^(CalculateManager *calculateManager){
        calculateManager.add(3).add(3).sub(2).multiple(3).divide(4);
    }];
    NSLog(@"%zd",result);
result.png

相关文章

  • iOS 链式编程思想(仿Masonry写的计算管理类)

    前言:Masonry这个做约束的第三方框架,想必是大家都用过,一连串的约束在一句话完成,显得十分简洁优美,所以我来...

  • iOS链式编程

    前言 通过对Masonry的学习,我们了解了链式编程的思想。此片文章是使用链式编程的思想做一个计算机,练习一下链式...

  • ios 模仿Masonry链式语法

    模仿Masonry的链式语法编程模式,根据cocoachain博客仿写的。 下载地址:https://github...

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

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

  • iOS开发Masonry框架源码解析

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

  • 关于链式编程的理解:常看牢记

    模拟Masonry的链式编程,形式如: 思想(简单理解):

  • 链式编程

    最近有时间看了下Masonry的实现原理,大家都知道Masonry就是经典的链式编程思想 链式编程小练习 1.创建...

  • 简单的链式编程(iOS)

    1.链式编程思想 最初接触Masonry框架的时候还不知道什么链式编程,最初的感觉就是Masonry使用起来很简洁...

  • 编程思想-链式编程

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

  • iOS链式编程的实现方案

    在iOS中,Masonry自动布局库是典型的链式与函数式编程的集中体现。基于函数式编程范式的思想,包装组装对应的功...

网友评论

      本文标题:iOS 链式编程思想(仿Masonry写的计算管理类)

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