Reactive Cocoa在消息传输中的作用

此说明是针对即时通信(例如QQ,微信等)聊天界面中的每条消息传输。

首先,是将ViewController和tableView分开的,tableView写在了一个单独的Cocoa Touch Class中。如图1

图1


然后在NHChatViewController的-(void)viewDidLoad{...}中,如图2

图2

其中,需要解释的有:

1.红线标注的messages其实就是指self.messages,这应该是RACObserve(...)函数的参数写作方式,如果写为self.messages好像是不对的。

2.self.chatView.messagesSignal中的chatView是NHChat.storyboard中针对tableView部分的一个IBOutlet,messagesSignal是NHChatContentView的一个属性。

3.RACObserve(...)返回的是RACSignal,而RACSignal在某种程度上相当与是一个封装了messages的盒子(这个盒子封装的东西的属性取决于messages参数的类型),而这个盒子即是RACSignal型

4.由图2中注释,因为整个plist中的值是不断传输的,所以当messages发生变化时,就将变化后的值传递给NHChatContentView中。


再者,在NHChatContentView:UIView中,而UIView的标配即是-(void)wake等一系列函数,如图3

图3

1.buildTableView是一个自定义函数,旨在构建tableView;

2.@ weakify(self);和@strongify(self)是防止形成引用环;

3.为什么不对self.messagesSignal直接使用subscribeNext解析呢?因为这与程序执行有关,最初得到的值为空,而不能使得消息显示;虽然RACObserve(self, messagesSignal)得到的是封装了两次的NSArray,但是switchToLatest能解决。。。。。


这样做的好处是:在实际消息中,消息的message并不一定来自plist,它也可以来自数据库或者服务器端等,而以Reactive Cocoa这种方式实现,使得我们不用去关心消息的来源。


--20150518学习记录



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值