- 链式编程思想:是将多个操作(多行代码)通过点号(.)链接在一起成为一句代码,使代码可读性提高。
- 链式编程特点:方法的返回值是block,block必须返回对象本身(返回block时,block所在的方法调用者对象)block的参数是需要操作的值。
代表是:masonry框架
下面是链式编程的一个代码实例。为任何一个类添加一个加法计算的功能
使用者ViewController.m的文件中
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
// 1.让所有的类都可以计算
int result = [self calulate:^(CaculateManager *mgr) {
// 把所有计算封装到CaculateManager
mgr.add(5).add(5);
NSInteger a = mgr.num;
// [[mgr add:5] add:5];
}];
// 方法:返回值:对象本身,参数:需要计算值
NSLog(@"%d",result);
}
NSObject+Caculate.h文件中
@class CaculateManager;
@interface NSObject (Caculate)
// 计算
- (int)calulate:(void(^)(CaculateManager *))block;
@end
NSObject+Caculate.m文件中
@implementation NSObject (Caculate)
// 计算
- (int)calulate:(void (^)(CaculateManager *))block
{
// 1.创建计算管理者
CaculateManager *mgr = [[CaculateManager alloc] init];
// 2.执行计算
block(mgr);
return mgr.result;
}
@end
CaculateManager.h文件
@interface CaculateManager : NSObject
// 保存结果值
@property (nonatomic, assign) int result;
//- (instancetype)add:(int)value;
- (CaculateManager *(^)(int))add;
- (NSInteger)num;
@end
CaculateManager.m文件
@implementation CaculateManager
- (CaculateManager *(^)(int))add
{
// 返回block
// 先定义block
// CaculateManager *(^block)(int) = ^CaculateManager *(int value){
// _result += value;
// return self;
// };
// 返回block
return ^CaculateManager *(int value){
_result += value;
return self;
};
}
@end
下图是对上面执行流程的详细描述。