链式编程思想
2016-07-16 10:39
288 查看
链式编程
链式编程思想:把要做的事情封装到block,给外界提供一个返回这个Block的方法链式编程思想方法特点:方法返回值必须是block,block参数:放需要操作的内容,block返回值:方法调用者#
代表:masonry框架
//给NSObject写一个分类,使所有类都可以调用计算器方法 #import <Foundation/Foundation.h> #import "CaculatorMaker.h" @interface NSObject (Caculator) // 以后计算都使用这个方法,一调用这个方法就返回结果. + (int)makeCaculator:(void(^)(CaculatorMaker *))block; @end
#import "NSObject+Caculator.h" #import "CaculatorMaker.h" @implementation NSObject (Caculator) + (int)makeCaculator:(void (^)(CaculatorMaker *))block { // 创建计算制造者 CaculatorMaker *maker = [[CaculatorMaker alloc] init]; // 计算 block(maker); return maker.result; } @end
#define ADD @interface CaculatorMaker : NSObject @property (nonatomic, assign) KVO int result; //+ - (CaculatorMaker *(^)(int num))add; ADD // * - (CaculatorMaker *(^)(int num))multy; @end
@implementation CaculatorMaker - (CaculatorMaker *(^)(int))multy { return ^(int num){ _result *= num; return self; }; } - (CaculatorMaker * (^)(int num))add { return ^(int num){ _result += num; return self; }; } @end
//外层调用 int result = [NSObject makeCaculator:^(CaculatorMaker *maker) { // 把所有的计算代码封装到这里 maker.add(10).add(20); maker.add(30).add(40); maker.multy(3); }]; NSLog(@"%d",result);