Objective-C 鏈式調(diào)用示例

Objective-C 鏈式調(diào)用

.鏈式調(diào)用的特點:方法的返回值是block,block的返回值類型必須是類本身類型的指針,block的參數(shù)類型,就是方法需要操作的參數(shù)類型。

#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface Calculate : NSObject
@property (nonatomic, assign) NSInteger result;
- (Calculate*(^)(NSInteger))add;
- (Calculate*(^)(NSInteger))sub;
@end
NS_ASSUME_NONNULL_END
#import "Calculate.h"
@implementation Calculate
- (Calculate*(^)(NSInteger))add {
    return ^Calculate*(NSInteger valute) {
        self.result += valute;
        return self;
    };
}
- (Calculate*(^)(NSInteger))sub {
    return ^Calculate*(NSInteger value) {
        self.result -= value;
        return self;
    };
}
@end
#import <Foundation/Foundation.h>
#import "Calculate.h"
NS_ASSUME_NONNULL_BEGIN
@interface NSNumber (Math)
+ (NSInteger)makeCalculate:(void(^)(Calculate *make))calculate;
@end
#import "NSNumber+Math.h"
@implementation NSNumber (Math)
+ (NSInteger)makeCalculate:(void (^)(Calculate *make))calculate {
    Calculate *operator = [[Calculate alloc] init];
    if (calculate) {
        calculate(operator);
    }
    return operator.result;
}
@end

.調(diào)用示例

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
   NSInteger res = [NSNumber makeCalculate:^(Calculate * _Nonnull make) {
       make.add(3).add(8).sub(4);
   }];
    return YES;
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容