链式编程思想

来源:互联网 发布:招聘python 编辑:程序博客网 时间:2024/05/16 12:10

链式编程

链式编程思想:把要做的事情封装到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);
0 0