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

前端之家收集整理的这篇文章主要介绍了函数式、响应式编程 - ReactiveCocoa 快速入门前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

函数式、响应式编程(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);
                  }];

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

猜你在找的React相关文章