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);
    
上一篇下一篇

猜你喜欢

热点阅读