swift reactivecocoaa谁写的

iOS开发新框架ReactiveCocoa简介 - 手机系统 - 编程入门网
iOS开发新框架ReactiveCocoa简介
ReactiveCocoa(其简称为RAC)是由Github 开源的一个应用于iOS和OS X开发的新框架。RAC具有函 数式编程和响应式编程的特性。它主要吸取了.Net的 Reactive Extensions的设计和实现。本文将详细 介绍该框架试图解决什么问题,以及其用法与特点。
ReactiveCocoa试图解决什么问题
经过一段时间的研究,我认为ReactiveCocoa试图解决以下3个问题:
传统iOS开发过程中,状态以及状态之间依赖过多的问题
传统MVC架构的问题:Controller比较复杂,可测试性差
提供统一的消息传递机制
传统iOS开发过程中,状态以及状态之间依赖过多的问题
我们在开发iOS应用时,一个界面元素的状态很可能受多个其它界面元素或后台状态的影响。
例如,在用户帐户的登录界面,通常会有2个输入框(分别输入帐号和密码)和一个登录按钮。如果 我们要加入一个限制条件:当用户输入完帐号和密码,并且登录的网络请求还未发出时,确定按钮才可 以点击。通常情况下,我们需要监听这两个输入框的状态变化以及登录的网络请求状态,然后修改另一 个控件的enabled状态。
传统的写法如下(该示例代码修改自ReactiveCocoa官网 ) : /ReactiveCocoa/ReactiveCocoa
static void *ObservationContext = &ObservationC
(void)viewDidLoad {
[super viewDidLoad];
[LoginManager.sharedManager addObserver:self
forKeyPath:@&loggingIn&
options:NSKeyValueObservingOptionInitial
context:&ObservationContext];
[self.usernameTextField addTarget:self action:@selector(updateLogInButton)
forControlEvents:UIControlEventEditingChanged];
[self.passwordTextField addTarget:self action:@selector(updateLogInButton)
forControlEvents:UIControlEventEditingChanged];
- (void)updateLogInButton {
BOOL textFieldsNonEmpty = self.usernameTextField.text.length & 0
&& self.passwordTextField.text.length & 0;
BOOL readyToLogIn = !LoginManager.sharedManager.isLoggingIn && !self.loggedIn;
self.logInButton.enabled = textFieldsNonEmpty && readyToLogIn;
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object
change:(NSDictionary *)change context:(void *)context {
if (context == ObservationContext) {
[self updateLogInButton];
[super observeValueForKeyPath:keyPath ofObject:object
change:change context:context];君,已阅读到文档的结尾了呢~~
ReactiveCocoa函数式响应编程..
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
ReactiveCocoa函数式响应编程简介一
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer--144.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口春节研究ReactiveCocoa,写了一个面向初学者的入门介绍:
什么是ReactiveCocoaReactiveCocoa(其简称为RAC)是由Github 开源的一个应用于iOS和OS X开发的新框架。RAC具有函数式编程和响应式编程的特性。它主要吸取了.Net的 Reactive Extensions的设计和实现。ReactiveCocoa试图解决什么问题经过一段时间的研究,我认为ReactiveCocoa试图解决以下3个问题:传统iOS开发过程中,状态以及状态之间依赖过多的问题传统MVC架构的问题:Controller比较复杂,可测试性差提供统一的消息传递机制传统iOS开发过程中,状态以及状态之间依赖过多的问题我们在开发iOS应用时,一个界面元素的状态很可能受多个其它界面元素或后台状态的影响。例如,在用户帐户的登录界面,通常会有2个输入框(分别输入帐号和密码)和一个登录按钮。如果我们要加入一个限制条件:当用户输入完帐号和密码,并且登录的网络请求还未发出时,确定按钮才可以点击。通常情况下,我们需要监听这两个输入框的状态变化以及登录的网络请求状态,然后修改另一个控件的enabled状态。试图解决MVC框架的问题对于传统的Model-View-Controller的框架,Controller很容易变得比较庞大和复杂。由于Controller承担了Model和View之间的桥梁作用,所以Controller常常与对应的View和Model的耦合度非常高,这同时也造成对其做单元测试非常不容易,对iOS工程的单元测试大多都只在一些工具类或与界面无关的逻辑类中进行。RAC的信号机制很容易将某一个Model变量的变化与界面关联,所以非常容易应用Model-View-ViewModel 框架。通过引入ViewModel层,然后用RAC将ViewModel与View关联,View层的变化可以直接响应ViewModel层的变化,这使得Controller变得更加简单,由于View不再与Model绑定,也增加了View的可重用性。因为引入了ViewModel层,所以单元测试可以在ViewModel层进行,iOS工程的可测试性也大大增强了。InfoQ也曾撰文介绍过MVVM:《MVVM启示录》 。统一消息传递机制iOS开发中有着各种消息传递机制,包括KVO、Notification、delegation、block以及target-action方式。各种消息传递机制使得开发者在做具体选择时感到困惑,例如在objc.io上就有专门撰文(破船的翻译 ),介绍各种消息传递机制之间的差异性。RAC将传统的UI控件事件进行了封装,使得以上各种消息传递机制都可以用RAC来完成。ReactiveCocoa的特点RAC在应用中大量使用了block,由于Objective-C语言的内存管理是基于引用计数 的,为了避免循环引用问题,在block中如果要引用self,需要使用@weakify(self)和@strongify(self)来避免强引用。另外,在使用时应该注意block的嵌套层数,不恰当的滥用多层嵌套block可能给程序的可维护性带来灾难。RAC的编程方式和传统的MVC方式差异巨大,所以需要较长的学习时间。并且,业界内对于RAC并没有广泛应用,这造成可供参考的项目和教程比较欠缺。 另外,RAC项目本身也还在快速演进当中,1.x版本和2.x版本API改动了许多,3.0版本也正在快速开发中,对它的使用也需要考虑后期的升级维护问题。作为一个iOS开发领域的新开源框架,ReactiveCocoa带来了函数式编程和响应式编程的思想,值得大家关注并且学习。一些学习资源博客&教程//objective-c-delegate-pattern//4549-data-driven-ios-development-reactivecocoa/http://en.wikipedia.org/wiki/Functional_reactive_programming/blog/reactivecocoa//blog/getting-started-with-reactivecocoa//reactivecocoa//2013/03/basic-mvvm-with-reactivecocoa.html//learning-ios-notes-twenty-eight//andrewsardone/reactivecocoa-at-mobidevday-2013/en-us/library/hh848246.aspxhttp://www.itiger.me/?p=38/ios//reactivecocoa-2.html/ReactiveCocoa/ReactiveCocoa/blob/master/Documentation/FrameworkOverview.mdhttp://www.haskell.org/haskellwiki/Functional_Reactive_Programminghttp://blog.zhaojie.me/2009/09/functional-reactive-programming-for-csharp.html代码/Machx/MVVM-IOS-Example/ReactiveCocoa/RACiOSDemo书籍/iosfrp视频/
> 本站内容系网友提交或本网编辑转载,其目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请及时与本网联系,我们将在第一时间删除内容!
写给C语言初学者的话 --www.chinaunix.net(ldap) 前些天我写了一篇“Unix C语言值得注意的地方”一贴,回贴中谈到学习国外的开源软件中的高质量代码的问题,但是有朋友跟我说,在看代码的过程中感觉难度很大,想想也是如此,动辄十几万行的程序如果没有人指点的话是很难找到切入点的,所以我撰写了此文希望能对广大C语言爱好者有所帮助,在文章中有很 ...
写给C语言初学者的话
--www.chinaunix.net(ldap)
前些天我写了一篇“Unix C语言值得注意的地方”一贴,回贴中谈到学习国外的开源软件中的高质量代码的问题,但是有朋友跟我说,在看代码的过程中感觉难度很大,想想也是如此,动辄十几万行的程序如果没有人指点的话是很难找 ...
基于J2EE的框架技术的实现与应用 J2EE的应用越来越广泛,J2EE应用从设计上可以分为三层:表示层.业务层和数据持久层.在这三层上与之对应的J2EE技术为WEB技术和EJB技术,WEB技术实现表现层,而EJB规范负责业务层和数据层.由于J2EE技术的不断发展,在J2EE设计的各个层次现在都有对应的轻量级框架出现,轻量级框架的发展极大了推动了J2EE技术的 ...
今天个人coding的模块测试,所以闲暇之余继续研究solr,然后顺带写了一个实例,随便搞的,solr真心不熟,期待认识热爱搜索的朋友,共同进步.1.配置schema.xml文件[solr\collection1\conf\目录下] 因为schema默认定义了一些Field,我们这里选取[id,title,description, author]这几个属性, ...
一个适合初学者的Ant教程
一,构建ant环境 要使用ant首先要构建一个ant环境,步骤很简单: 1),安装jdk,设置JAVA_HOME ,PATH ,CLASS_PATH(这些应该是看这篇文章的人应该知道的) 2),下载ant 地址www.apache.org找一个你喜欢的版本,或者干脆最新的版本 3),解压ant 你得到的是一个压缩包,解 ...
今天在看开源中国时看到别人写的一个demo很帅啊,是一个垂直方向展示的弹出菜单,链接地址为:IOS弹出式菜单KxMenu 同时文中也附上了github的地址,在此热泪感谢原作者,我们来试用一下. 因为学习了也有一段日子了,所以我们不能只做一个拖控件的,所以今天的这个demo,我们用纯代码方式来实现一下. 首先,创建一个空的项目. 然后我们添加一个Object ...
本文主要研究一下EditText的属性(还没研究完,边研究边写)
一.结构 java.lang.Object ? android.view.View ? android.widget.TextView
? android.widget.EditText 已知直接子类: AutoCompleteTextView, ExtractEditT ...
对于这个系列里的问题,每个学Java的人都应该搞懂.当然,如果只是学Java玩玩就无所谓了.如果你认为自己已经超越初学者了,却不很懂这些问题,请将你自己重归初学者行列.内容均来自于CSDN的经典老贴. 问题一:我声明了什么! String s = &Hello world!&; 许多人都做过这样的事情,但是,我们到底声明了什么?回答通常是 ...

我要回帖

更多关于 reactivecocoa demo 的文章

 

随机推荐