iOS 编程思想
2020-12-21 本文已影响0人
Nothing_xy
7.8 编程思想
链式编程
特点
- 是将多个操作(多行代码)通过点号(.)链接在一起成为一句代码,使代码可读性好。a(1).b(2).c(3)
- 方法的返回值是block,block必须有返回值(对象本身),block参数(需要操作的值)
- 示例
@class Calculator;
typedef Calculator * (^addBlock)(int);
typedef Calculator * (^subBlock)(int);
typedef Calculator * (^mulBlock)(int);
typedef Calculator * (^diviBlock)(int);
@interface Calculator : NSObject
- (addBlock)add;
- (subBlock)sub;
- (mulBlock)mul;
- (diviBlock)divi;
@interface Calculator()
@property (assign , nonatomic)int currNum;
@end
@implementation Calculator
- (addBlock)add
{
return ^(int a){
self.currNum += a;
NSLog(@"result=%d",self.currNum);
return self;
};
}
- (subBlock)sub{
return ^(int a){
self.currNum -= a;
NSLog(@"result=%d",self.currNum);
return self;
};
}
- (mulBlock)mul{
return ^(int a){
self.currNum *= a;
NSLog(@"result=%d",self.currNum);
return self;
};
}
- (diviBlock)divi{
return ^(int a){
self.currNum /= a;
NSLog(@"result=%d",self.currNum);
return self;
};
}
Calculator * ca = [[Calculator alloc] init];
ca.add(10).sub(1).mul(9).divi(9);
@end
函数编程
特点
- 函数式编程思想:是把操作尽量写成一系列嵌套的函数或者方法调用。
- 函数式编程特点:每个方法必须有返回值(本身对象),把函数或者Block当做参数,block参数(需要操作的值)block返回值(操作结果)
- 代表:ReactiveCocoa。
- 用函数式编程实现,写一个加法计算器,并且加法计算器自带判断是否等于某个值.
- 示例
#import @class CaculatorMaker; @interface NSObject (CaculatorMaker) //计算 + (int)makeCaculators:(void(^)(CaculatorMaker *make))caculatorMaker; @end #import "NSObject+CaculatorMaker.h" #import "CaculatorMaker.h" @implementation NSObject (CaculatorMaker) //计算 + (int)makeCaculators:(void(^)(CaculatorMaker *make))block { CaculatorMaker *mgr = [[CaculatorMaker alloc] init]; block(mgr); return mgr.iResult; } @end @interface CaculatorMaker : NSObject @property (nonatomic, assign) int iResult; //加法 - (CaculatorMaker *(^)(int))add; //减法 - (CaculatorMaker *(^)(int))sub; //乘法 - (CaculatorMaker *(^)(int))muilt; //除法 - (CaculatorMaker *(^)(int))divide; @end #import "CaculatorMaker.h" @implementation CaculatorMaker - (CaculatorMaker *(^)(int))add { return ^(int value) { _iResult += value; return self; }; } @end //调用 int iResult = [NSObject makeCaculators:^(CaculatorMaker *make) { make.add(1).add(2).add(3).divide(2); }];
响应式编程
特点
- 响应式编程思想:不需要考虑调用顺序,只需要知道考虑结果,类似于蝴蝶效应,产生了一个事件,会影响很多东西,这些事件就像流一样传播出去,然后影响结果,借用面向对象的一句话,万物皆是流,
- 代表:KVO