IOS 链式编程思想
2020-08-12 本文已影响0人
越天高
在开发中我们经常使用到,第三方框架,他们可以用点语法来实现函数不断的调用,现在我们来实现一下基本的原理
首先在OC中,方法的调用使用[ ];如果是使用的xxx(),说明使用的是block
- (void (^)(void))test
{
NSLog(@"A");
void (^myBlock)(void) = ^
{
NSLog(@"B");
};
NSLog(@"C");
return myBlock;
}
调用的话
self.test()
如果我们要不断的调用,说面返回值类型是一个block,然后还可以继续使用.语法,说明了block也有一个返回值,他的返回值就是当前的对象,
简单演示一个加法计算器
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface JiSuanQi : NSObject
@property (nonatomic, assign) CGFloat result;
- (JiSuanQi* (^)(CGFloat))add;
@end
NS_ASSUME_NONNULL_END
@implementation JiSuanQi
- (JiSuanQi * _Nonnull (^)(CGFloat))add
{
return ^(CGFloat num)
{
self.result += num;
return self;
};
}
@end
使用
JiSuanQi *newTool = [[JiSuanQi alloc] init];
newTool.add(5).add(6.4);
NSLog(@"%f", newTool.result);