Reactive Cocoa 响应式编程开发实例讲解-中篇,reactivecocoa

  次阅读 来源:互联网(转载协议) 2015-09-28 13:35 我要评论(0)

Reactive Cocoa 响应式编程开发实例讲解-中篇,reactivecocoa

上一篇文章作为开门篇讲述了Cocoa Reactive概述。

这里我们详细介绍一下CocoaReative在代码中的应用。

网上好多blog有人形容CocoaReative 中 signals是插座或者水龙头,感觉不是很好理解。我举个更贴近生活的,用电话订菜(餐馆是Signals,电话订阅是SubScriberNext)。

1.概述

Create一个Signal我们视为是一个支持电话订餐的餐馆,他们有很多菜,油盐酱醋就更不用说,当一个电话打进来首先,这个Signal就开始执行,等菜做好了,菜馆要做的是SendNext通知你一下,你呢?就出来拿,或者让他们送来,最后吃掉。分析一下在这期间,可能会有好多订阅者,菜馆只有一个,厨师会源源不断的炒菜(不要说什么如果菜馆没菜怎么办?太坑了),满足所有订阅者(电话预定)的需求。当然如果没人订阅这些配菜不会被炒,都处于配菜状态,所以,这些配菜可以用来组合,过滤什么的,以达到满足用户的口味(SubscriberNext)。怎么样这个举例不知道能否帮助你的理解。

后面的讲述将会拆解步骤来辅助大家理解不同的功能和类、方法。

//我是菜馆,有了我你们才有源源不断的饭菜可以吃

RACSignal *signal = [RACSignal createSignal:^ RACDisposable * (id<RACSubscriber> subscriber) {

NSLog(@"接单了");

NSLog(@"处理.....");

[subscriber sendNext:@"炒菜完成,打电话给客户"];

return nil;

}];

//有菜馆的菜单了,开始电话预定

[signal subscribeNext:^(id x){

NSLog(@"客户处理开始吃了:X是菜馆给的%@",x);

}];

这样不知道大家是否明白,反正我是明白了。提一个问题,如果没有电话预定,菜馆能做菜吗?(Signal能触发吗?)答案是:如果不怕赔钱,可以天天做好菜等着(估计没人吃,几天你的菜馆就关门了)。

2.Signals和它的两种状态-冷、热信号(其实就是菜馆有没有生意)

如果菜馆没有接到电话约定是不是生意很冷啊,所以叫做冷信号。如果不停的接单是不是生意红火啊,叫(红火不就是热吗)做热信号。那放到程序中怎么理解:

//我是菜馆,有了我你们才有源源不断的饭菜可以吃

RACSignal *signal = [RACSignal createSignal:^ RACDisposable * (id<RACSubscriber> subscriber) {

NSLog(@"接单了");

NSLog(@"处理.....");

[subscriber sendNext:@"炒菜完成,打电话给客户"];

//完成

[subscriber sendCompleted];

return nil;

}];

//如果后面没有订单我的生意怎么做啊!

一个Signal使用CreateSignal创建,这里没什么好讲的记住就可以了。

上面已经说了,如果没有订单我的生意怎么做,这就是冷Signal。

突然有一天,来生意了,结果来了一百个。是不是就火了,这就是热Signal。

//来生意了

//有菜馆的菜单了,开始电话预定

[signal subscribeNext:^(id x){

NSLog(@"客户处理开始吃了");

}];

到这里不知道到家是否有对Signal有个初步的认识,Signal是Reactive的核心,理解了,基本上你就可以驾驭这个框架做你想做的。它不仅仅有SendNext方法,还有

sendNext:其实生活中菜馆是把所有的菜做好了,才打电话通知你,程序中是这样的,超好一个菜就sendNext:客户就吃一个。明白了很像在饭店吃饭(对,就是这样,你就理解是在饭店吃饭(执行Signal),做好一个上一个(SendNext),你吃一个(subscribeNext:))。

本站部分文章来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-1688-302!

人工智能实验室
相关文章相关文章
  • Michael I. Jordan带你解读百万奖金ATEC蚂蚁人工智能大赛

    Michael I. Jordan带你解读百万奖金ATEC蚂蚁人工智能大赛

  • Oculus公布原型机,大幅度提升可视角,能实现140°的视场水平

    Oculus公布原型机,大幅度提升可视角,能实现140°的视场水平

  • 2018深圳国际人工智能展览会 2018 shenzhen International Artif

    2018深圳国际人工智能展览会 2018 shenzhen International Artif

  • teamLab创始人猪子寿之: 抛去衣食住行,我还剩下什么?

    teamLab创始人猪子寿之: 抛去衣食住行,我还剩下什么?

网友点评网友点评
阅读推荐阅读推荐

据外媒报道,STEER打造了首款完全自动驾驶停车技术,旨在使常规车辆转变为无人驾驶车辆。STEER的首款技术应用是4级自动驾驶及网络安全停车...

近日,美国软性机器抓手制造商 Soft Robotics 宣布,获得 2000 万美元的融资,本轮投资者包括 Scale Venture Partners,Calibrate Ventures...

据外媒报道,加州车管局发布了《2017自动驾驶脱离报告(California Autonomous Vehicle Disengagement Reports)》,其中谈及了脱离的具体...

用人机语音交互,来解决智能家居适老的问题;通过家庭门禁与安防套件、空气净化套件、可燃气体与有害气体监控套件等相互联动,在不同生活情...