《iOS响应式编程开发ReactiveCocoa一.docxVIP

《iOS响应式编程开发ReactiveCocoa一.docx

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《iOS响应式编程开发ReactiveCocoa一

/daxiaxiaohao/p/4460449.html[iOS] 响应式编程开发-ReactiveCocoa(一)以下分享自蓝鸥“肖大侠”技术原创,希望让大家能够更多的了解到在iOS开发平台上响应式编程开发-ReactiveCocoa,此文为上篇,后续还会分享下篇。什么是响应式编程 响应式编程是一种面向数据流和变化传播的编程范式。这意味着可以在编程语言中很方便地表达静态或动态的数据流,而相关的计算模型会自动将变化的值通过数据流进行传播。 例如,在命令式编程环境中,a:=b+c表示将表达式的结果赋给a,而之后改变b或c的值不会影响a。但在响应式编程中,a的值会随着b或c的更新而更新。电子表格程序就是响应式编程的一个例子。单元格可以包含字面值或类似=B1+C1的公式,而包含公式的单元格的值会依据其他单元格的值的变化而变化。 响应式编程最初是为了简化交互式用户界面的创建和实时系统动画的绘制而提出来的一种方法,但它本质上是一种通用的编程范式。什么是ReactiveCocoa ReactiveCocoa (RAC) 是一个Objective-C语言内实现响应式编程的框架。 RAC提供了大量的能够完成发送 values stream 的API。 RAC通过使用信号量(RACSignal)来完成获取当前值和未来值的功能,而不像传统的程序开发一样需要声明大量的变量。?Josh Abernathy这样解释它:程序接收输入产生输出。输出就是对输入做了一些事的结果。输入,转换,输出,完成。输入是应用动作的全部来源。点击、键盘事件、定时器事件、GPS时间、网络请求响应都算是输入。这些事件被传递到应用中,应用将他们以某种方式混合,产生了结果:就是输出。输出通常会改变应用的UI。开关状态变化、列表有了新的元素都是UI变化。也有可能让磁盘上某个文件产生变化,或者产生一个API请求,这都是应用的输出。但不像传统的输入输出设计,应用的输入输出可以产生很多次。应用打开后,不只是一个简单的 输入→工作→输出 就构成了一个生命周期。应用经常有大量的输入并基于这些输入产生输出。基本的使用方法 例如,我们目前想要实现一个NSString对象可以一直绑定到必威体育精装版的时间,即使字符串发生了变化,也不应该是再去使用时间去重新赋值了。 听起来特别像Objective-C语言内的KVO特性,但是这并不是具有压倒性优势的那个方法:1- (void)observeValueForKeyPath:(NSString?*)keyPath ofObject:(id)object change:(NSDictionary?*)change context:(void?*)context; 那么我们现在使用RAC框架来实现这个功能1***.h1234//用来标识时间变量@property?(nonatomic?,strong)?NSDate?*time;//用来标识文字显示区域@property?(nonatomic?,strong)?IBOutlet?UILabel *label; 1***.m12345678910111213141516171819//申请注册一个每个1秒将会在主线程执行一次的信号量RACSignal *repeatSignal = [[RACSignal interval:1 onScheduler:[RACScheduler mainThreadScheduler]] repeat];//为信号量添加执行代码端[repeatSignal subscribeNext: ^(NSDate* time){?self.time = time;}];??//申请注册一个时间属性的信号量RACSignal *timeSignal = [self?rac_valuesForKeyPath:@time?observer:self];//为信号量添加执行代码端[timeSignal subscribeNext:^(NSDate* time) {?NSDateFormatter?*formatter = [[NSDateFormatter?alloc] init];?[formatter setDateFormat:@HH:mm:ss];???self.label.text = [formatter stringFromDate:time];???RELEASESAFELY(formatter);}];  同样和Objective-C语言内的KVO特性不同的是,RACSignal信号量可以进行过滤设置。 以上边的例子的话,我们加一个功能。 ?获取偶数秒的时间 那么信号量部分的代码可以写为123456789101112131415161718//申请注册一个时间属性的信号量RACSignal

文档评论(0)

1789811832 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档