响应式编程 RAC(ReactiveCocoa)初步学习
2019-05-07 11:00
281 查看
导入pod ‘ReactiveObjC’,’~>3.0.0’
头文件 #import <NSObject+RACKVOWrapper.h> #import <ReactiveObjC.h>
KVO与RAC 对比
KVO - (void)viewDidLoad { [super viewDidLoad]; _p = [[Person alloc] init]; //添加观察者 [_p addObserver:self forKeyPath:NSStringFromSelector(@selector(name)) options:(NSKeyValueObservingOptionNew) context:nil]; //NSKeyValueObservingOptionNew是接受最新值 默认就是new ====name是Person类里的nsstring类型属性 } //改变的回调 -(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context { NSLog(@"\n--keyPath:%@\n--object:%@\n--change:%@\n",keyPath,object,change); } -(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event { static int a ; _p.name = [NSString stringWithFormat:@"%d",a++]; }
运行
RAC
- (void)viewDidLoad { [super viewDidLoad]; _p = [[Person alloc] init]; [[_p rac_valuesForKeyPath:NSStringFromSelector(@selector(name)) observer:nil]/*观察Person中name属性的变化*/ subscribeNext:^(id _Nullable x) { NSLog(@"%@",x);//上面类似block传值 值传入x }]; } -(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event { static int a; _p.name = [NSString stringWithFormat:@"%d",a++]; }
//将回调与创建观察者放在一个代码块完成,提高聚合性
运行效果
相关文章推荐
- char_traits struct 初步学习
- OpenMP的学习初步
- POI初步学习1
- JAXB初步的学习
- ROS的初步学习(九)--创建一个简单的文本文件msg
- 初步学习“C#接口”(3)
- .Net 初步学习笔记之一——.Net 平台与.Net FrameWork框架的关系
- linux内核学习初步
- 内核初步学习
- Nginx学习初步了解
- HTML初步学习笔记(一)
- Kettle初步学习
- 学习ReactiveCocoa教程 (整理的资料)
- CommunityServer 2.1初步学习
- bash的初步学习
- PHP学习第一节----for循环的应用及对date函数的初步使用
- 安卓学习第十三天:大文件的IO,字符流,处理流,内部类,匿名内部类,线程初步
- linux调试工具gdb初步学习
- Android初步学习NDK和JNI开发(命令行的方式)
- RxJava-操作符 初步学习