RAC學(xué)習(xí)記錄
先了RAC中的幾個術(shù)語解釋,鏈?zhǔn)健⒑瘮?shù)式践惑、響應(yīng)式
- 鏈?zhǔn)缴骺牛胋lock作為函數(shù)的返回參數(shù)乡恕,并且block的返回值是對象本身
比如像如下調(diào)用 add(10).(5)
比較典型的框架masonry
在此,我用鏈?zhǔn)降姆椒▽懥艘粋€計算器
.h文件
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface Calculation : NSObject
/**
加
*/
- (Calculation *(^)(int))add;
/**
減
*/
- (Calculation *(^)(int))sub;
/**
乘
*/
- (Calculation *(^)(int))muilt;
/**
除
*/
- (Calculation *(^)(int))divide;
@end
NS_ASSUME_NONNULL_END
@interface NSObject (Calculation)
+ (int)makeCalculation:(void(^)(Calculation *))calculation;
@end
.m文件
#import "Calculation.h"
@interface Calculation()
/** 結(jié)果 */
@property(nonatomic, assign) int result;
@end
@implementation Calculation
- (Calculation *(^)(int))add{
return ^Calculation *(int value){
_result += value;
return self;
};
}
- (Calculation * _Nonnull (^)(int))sub
{
return ^Calculation *(int value){
_result -= value;
return self;
};
}
- (Calculation * _Nonnull (^)(int))muilt
{
return ^Calculation *(int value){
_result *= value;
return self;
};
}
- (Calculation * _Nonnull (^)(int))divide
{
return ^Calculation *(int value){
_result /= value;
return self;
};
}
@end
@implementation NSObject (Calculation)
+ (int)makeCalculation:(void (^)(Calculation *))calculation{
Calculation *cal = [[Calculation alloc] init];
if (calculation) {
calculation(cal);
}
return cal.result;
}
@end
使用如下
int result = [NSObject makeCalculation:^(Calculation *make) {
make.add(10).add(20).sub(20).muilt(10);
}];
NSLog(@"-----:%d",result);
- 函數(shù)式 啥意思?
每個方法必須有返回值(本身對象),把函數(shù)或者Block當(dāng)做參數(shù),block參數(shù)(需要操作的值)block返回值(操作結(jié)果)
搞個demo體驗下