鏈式編程思想:
是將多個操作通過點號(.)鏈接在一起成爲一句代碼,使代碼可讀性好。
鏈式編程的特點:方法的返回值是block,block必須有返回值(對象本身),block裏可以有參數(需要操作的值)。方法的返回值必須是方法的調用者。
代表作: masonry框架
// 核心功能
//.h
@interface sumManager : NSObject
//計算結果
@property(assign,nonatomic)int result;
// 返回對象本身,可以連續調用本對象裏邊的方法
-(sumManager * (^)(int value))add;
@end
//.m
-(sumManager *(^)(int value))add
{
return ^(int value){
_result += value;
return self;
};
}
// 寫一個NSObject的分類,方便調用
@implementation NSObject (sum)
+(int)makeConstraints:(void(^)(sumManager *))blocker
{
sumManager *mgr = [[sumManager alloc]init];
blocker(mgr);
return mgr.result;
}
// VC 裏邊調用
int result = [NSString makeConstraints:^(sumManager * mgr) {
mgr.add(100).add(100).add(200);
}];
NSLog(@"%d",result);
函數式編程:
將操作儘可能寫在一起的嵌套函數
本質:就是往方法裏邊傳入block,方法中嵌套Block的調用。
// 計算核心
@implementation SumManager
-(instancetype)manager:(int (^)(int))sumBlock
{
_result = sumBlock(_result);
return self;
}
@end
// 調用
SumManager *mgr = [[SumManager alloc]init];
int result = [[mgr manager:^int(int result) {
result += 10;
result *= 2;
return result;
}]result];
NSLog(@"%d",result);
響應式編程
是一種面向數據流和變化傳播的編程範式。這意味着可以在編程語言中很方便地表達靜態或動態的數據流,而相關的計算模型會自動將變化的值通過數據流進行傳播。
例如,在命令式編程環境中,a:=b+c表示將表達式的結果賦給a,而之後改變b或c的值不會影響a。但在響應式編程中,a的值會隨着b或c的更新而更新。電子表格程序就是響應式編程的一個例子。單元格可以包含字面值或類似"=B1+C1"的公式,而包含公式的單元格的值會依據其他單元格的值的變化而變化。
響應式編程最初是爲了簡化交互式用戶界面的創建和實時系統動畫的繪製而提出來的一種方法,但它本質上是一種通用的編程範式。
一版依賴 RAC、KVO、Notification 等實現