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

前言: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 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,200评论 4 61
  • 如果用一个词来总结我的2016,那就是“行动”。过去的自己一直停留在空想层面,想做的事很多,付出的很少,也没有正确...
    加一er阅读 454评论 6 9
  • 牵手成功 步入婚姻的殿堂 搭建爱的巢穴
    小芳画画阅读 300评论 0 2
  • 喜欢明媚的夏天里的树 因为每望一眼 那绿便会让你心情舒畅 像是一道清泉 凉爽了我的整个夏天
    土豆不是马铃薯阅读 216评论 0 0