美文网首页
ReactiveCocoa v2.5解析

ReactiveCocoa v2.5解析

作者: 高压锅炖熊 | 来源:发表于2016-04-04 00:56 被阅读47次

    简介

    ReactiveCocoa 是一个 iOS 中的函数式响应式编程框架,它受 Functional Reactive Programming 的启发,是 Justin Spahr-Summers 和 Josh Abernathy 在开发 GitHub for Mac 过程中的一个副产品,它提供了一系列用来组合和转换值流的 API 。

    ReactiveCocoa大体框架

    1.信号源(核心部分,其它组件都是围绕它运作)

    • RACStream
    • RACSignal
    • RACSubject
    • RACSequence

    2.订阅者

    • RACSubscriber
    • RACMulticastConnection

    3.调度器

    • RACScheduler

    4.清洁工

    • RACDisposable

    对于一个应用来说,绝大部分的时间都是在等待某些事件的发生或者响应某些状态的变化,比如用户的触摸事件、应用进入后台、网络请求成功刷新界面等等,而维护这些状态的变化,常常会使代码变得非常复杂,难以扩展。而ReactiveCocoa给出了一种非常好的解决方案,它使用信号来代表这些异步事件,提供了一种统一的方式来处理所有异步的行为,包括代理方法、block回调、target-action机制、通知、KVO等等:

    
    // 代理方法
    [[self  rac_signalForSelector:@selector(webViewDidStartLoad:)
                          fromProtocol:@protocol(UIWebViewDelegate)]
                        subscribeNext:^(id x) {
            // 实现 webViewDidStartLoad: 代理方法
     }];
    
    // target-action
    [[self.avatarButton
       rac_signalForControlEvents:UIControlEventTouchUpInside]
        subscribeNext:^(UIButton *avatarButton) {
            // avatarButton 被点击了
        }];
    
    // 通知
    [[[NSNotificationCenter defaultCenter]
        rac_addObserverForName:kReachabilityChangedNotification object:nil]
        subscribeNext:^(NSNotification *notification) {
            // 收到 kReachabilityChangedNotification 通知
        }];
    
    // KVO
    [RACObserve(self, username) subscribeNext:^(NSString *username) {
        // 用户名发生了变化
    }];
    

    相关文章

      网友评论

          本文标题:ReactiveCocoa v2.5解析

          本文链接:https://www.haomeiwen.com/subject/eppulttx.html