很久之前就看过一个关于RAC的视频教学,就觉得很酷,一直很忙,也没有来的及实践,终于,最近一段时间闲下来,有时间感受一波神级的操作。好用到根本停不下来有木有。
但是首先,你得清楚RAC能做些什么,它到底是干哈的,不过就我目前了解的程度,我觉得可以大大节省代码量,完全可以代替协议,blocks回调,target-action机制,notifications和KVO,实现MVVM开发模式,但是又不仅仅只有这些功能,更深层次的还待详细深入。
1.RAC的导入
想信大家都是用cocoapod 导入工程,但是导入项目之后,使用RAC的时候出现,可能很多同学出现,找不到头文件的情况,也有找不到方法的情况,出现这种情况的小伙伴,不要急,没有配置好添加库的路径,一个方法是在targe->buildseting->otherLinkerFlags中添加$(inherited),或者是直接在target->buildPhases->linkBinaryWithLibraries中添加ReactiveCocoa的库就好啦,这样就可以愉快的玩耍啦。
2.Rac的5个基本类
·RACSignal
·RACSubject
·RACSequence
·RACMulticastConnection
·RACCommand
RACSignal
信号类,一般表示将来有数据传递,只要有数据改变,信号内部接收到数据,就会马上发出数据。只有订阅了该信号量,才会进行下一步的处理。默认的话,只是单纯的一个信号源,即使监听的值改变了,也不会发生任何改变,只有订阅了该信号,才会触发。使用信号RACSignal的subscribeNext就能订阅。
比如想要获取某个输入框输入的内容,就可以这样写:
[_userNameTextField.rac_textSignal subscribeNext:^(NSString *text) {
NSLog(@"输入的内容%@", text);
}];
是不是很方便,就可以不需要签代理,来获取内容了,
或者给按钮添加点击事件:
[[self.loginButton rac_signalForControlEvents:UIControlEventTouchUpInside]
subscribeNext:^(id x) {
}];
今天就简单的总结一下,最基本的用法,后续还有
·关联model
·组合信号
·合并信号
·flattenMap
·flatten
·filter
·map-filter映射和过滤
·RAC()
网友评论