关于这系列(如果真能写下去的话):说是教程有点狂,边学边总结,更像个笔记吧,等完全用透之后再写就会忘了一开始学习过程中遇到的问题了,Reactive Cocoa(RAC)现在资料真心少,中文英文加起来没几篇,还都是转来转去的。这是个好东西,相信以后用的人会变多,转了请留该文原地址哦~ by sunny
废话少说 --> RAC
是什么?怎么来的?干啥用的? 怎么用的? 可以观摩无网不剩的blog RAC介绍1和2,在此不啰唆了,简而言之,就是一个函数响应式编程思想在Cocoa下的实现。
说说在RAC框架下做了一个项目的赶脚吧:
我就想干这么个事,一个label一个text field,下面输啥上面显示啥
老写法大概做法是这个vc实现UITextFieldDelegate协议,把这个text field的delegate设到vc上面,然后在要改变text的那个delegate方法里面取当前text field的text值,再赋给label上;
使用RAC的话就一句话(当然得把这俩控件都IBOutlet出来):
1 |
RAC( self .outputLabel, text) = self .inputTextField.rac_textSignal; // 博客园这个代码着色怎么这么丑 |
看着就挺爽。
复杂的栗子先不举了。
总之吧,等今后维护RAC的开发者和使用者把更多的Cocoa的东西归入RAC的框架中,这个框架基本上都可以凌驾于Cocoa这个框架了,意思是甚至用不着知道那些delegate啊KVO啊苹果告诉你是咋用的,用RAC封装的就行了。
重要的还是写代码思维方式的变化,如果全工程都使用RAC来实现,对于同一个业务逻辑终于可以在同一块代码里完成了,将UI事件,逻辑处理,文件或数据库操作,异步网络请求,UI结果显示,这一大套统统用函数式编程的思路嵌套起来,进入页面时搭建好这所有的关系,用户点击后妥妥的等着这一套联系一个个的按期望的逻辑和次序触发,最后显示给用户。感觉就像是搭好了一个精致的游乐场,然后不紧不慢地打开大门:@"Come on 熊孩子们!"
PS:写这个blog的时候用的RAC版本是2.2.3,以后有变化想起来就改了。
Reactive Cocoa Tutorial [0] = "Overview";
原文:http://www.cnblogs.com/sunnyxx/p/3543542.html