加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

函数式、响应式编程 - ReactiveCocoa 快速入门

发布时间:2020-12-15 04:50:30 所属栏目:百科 来源:网络整理
导读:函数式、响应式编程(Functional Reactive Programming)现在很火。网上的介绍也不少了。为了区别于其他教程,我这里用几个简单的例子让你马上可以投入使用。都是很常见的任务。下面操作假定你已经了解CocoaPods,现在管理库基本都用这个东西,很好用。 准备

函数式、响应式编程(Functional Reactive Programming)现在很火。网上的介绍也不少了。为了区别于其他教程,我这里用几个简单的例子让你马上可以投入使用。都是很常见的任务。下面操作假定你已经了解CocoaPods,现在管理库基本都用这个东西,很好用。

准备

导入ReactiveCocoa

在pod文件添加新的类库

pod "ReactiveCocoa"

安装

pod update

导入头文件

建议在pch导入,全局使用。

#import <ReactiveCocoa/ReactiveCocoa.h>

使用

UIButton单击事件

[[self.button rac_signalForControlEvents:UIControlEventTouchUpInside] subscribeNext:^(id x) { NSLog(@"按钮单击");
}];

监视UITextField内容变化

[[self.field rac_textSignal] subscribeNext:^(id x) { NSLog(@"UITextField: %@",x);
}];

监视UISwitch值变化

[[self.switchControl rac_newOnChannel] subscribeNext:^(id x) { NSLog(@"UISwitch: %@",x);
}];

通知

你不再需要再为每个通知指定一个selector,一个方法搞定。

[[[NSNotificationCenter defaultCenter] rac_addObserverForName:UIApplicationDidBecomeActiveNotification object:nil] subscribeNext:^(id x) { NSLog(@"UIApplicationDidBecomeActiveNotification");
}];

对其他对象的keyPath的值跟踪

UIView.frame

[RACObserve(self.view,frame) subscribeNext:^(id x) {
    NSLog(@"self.view.frame: %@",x);
}];

UIScrollView.contentOffset

[RACObserve(scrollView,contentOffset) subscribeNext:^(@"scrollView.contentOffset: %@",x);
}];

绑定一个值

RAC(.button,enabled) =
[RACSignal combineLatest:@[.usernameField.rac_textSignal,.passwordField.rac_textSignal]
                  reduce:^(NSString *username,NSString *password) {
                      return @(username.length && password.length);
                  }];

如果你已经试过上面的几个例子,那么恭喜你,你已经入门了。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读