iOS开发之ReactiveCocoa框架(RAC)第一篇
来源:互联网 发布:stm8s数据手册 编辑:程序博客网 时间:2024/06/09 06:34
简介:ReactiveCocoa为事件提供了很多处理方法,而且利用RAC处理事件很方便,可以把要处理的事情和监听的事情的代码放在一起,这样非常方便我们管理,就不需要跳到对应的方法里。那我们该如何灵活运用ReactiveCocoa呢?
系列学习总结:
-传统代码调用向RAC信号量的转变:信号量对于RAC函数编程的核心,对于OC的所有设计模式都提供了转换途径,除了涉及到的普通调用,委托协议,KVO等等以外,还有通知中心,线程的信号量转换方式。另外UIKit框架中也有很多控件对RAC框架进行了扩展
-3个由简到难的实际操作案例
-信号量和队列的特性,以及一系列的高级操作函数
RAC初识-设计模式+RAC信号量的统一
Cocoapods引入ReactiveCocoa
Podfile文件
platform :ios, "8.0"source 'https://github.com/CocoaPods/Specs.git'use_frameworks!target :'ReactiveCocoaDemo' dopod 'ReactiveCocoa', '~> 2.5'end
注:如何安装使用CocoaPods,请参考另一篇文章:
http://blog.csdn.net/wtdask/article/details/74645581
.h文件
#import "ViewController.h"@import ReactiveCocoa;@interface ViewController(){}- (void)viewDidLoad { [super viewDidLoad]; /* ReactiveCocoa框架方式 */ //信号量 RACSignal * viewDidAppearSiganl =[self rac_signalForSelector:@selector(viewDidAppear:)]; [viewDidAppearSiganl subscribeNext:^(id x) { //会在每次viewDidAppear调用的时候,执行 NSLog(@"打印日志:viewDidAppearSiganl-%s",__func__); NSLog(@"打印日志:参数-%@",x); }]; [viewDidAppearSiganl subscribeError:^(NSError *error) { //订阅错误 }]; [viewDidAppearSiganl subscribeCompleted:^{ //订阅完成状态 }]; UIButton * button =[UIButton buttonWithType:UIButtonTypeSystem]; [button setRac_command:[[RACCommand alloc] initWithEnabled:nil signalBlock:^RACSignal *(id input) { return [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) { NSLog(@"Clicked");// 测试异步操作 dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ [subscriber sendNext:[[NSDate date] description]];//返回给当前的时间给订阅者 [subscriber sendCompleted];//调用sendCompleted来结束这次按键的操作 }); return [RACDisposable disposableWithBlock:^{ }]; }]; }]]; [[[button rac_command] executionSignals] subscribeNext:^(id x) { [x subscribeNext:^(id x) { NSLog(@"%@",x); }]; }]; [button setTitle:@"点我" forState:UIControlStateNormal]; [button setBounds:CGRectMake(0, 0, 100, 200)]; [self.view addSubview:button]; [button setCenter:CGPointMake(self.view.frame.size.width/2, self.view.frame.size.height/2)];}-(void)viewDidAppear:(BOOL)animated{ [super viewDidAppear:animated]; [self setNeedsStatusBarAppearanceUpdate]; NSLog(@"打印日志:%s",__func__);}
阅读全文
0 0
- iOS开发之ReactiveCocoa框架(RAC)第一篇
- iOS开发之ReactiveCocoa框架(RAC)第二篇登录实例
- iOS开发之ReactiveCocoa框架(RAC)第三篇实例颜色选择器
- iOS开发之ReactiveCocoa框架(RAC)第四篇构建一个信号量
- iOS开发之ReactiveCocoa框架(RAC)第五篇队列与高级函数
- iOS开发之ReactiveCocoa框架(RAC)第六篇程序定位
- iOS开发:ReactiveCocoa(RAC)应用场景
- IOS响应式编程框架ReactiveCocoa(RAC)
- iOS响应式编程框架ReactiveCocoa(RAC)
- iOS Reactivecocoa(RAC)知其所以然(源码分析,一篇足以)
- ios编程之ReactiveCocoa框架
- iOS Reactivecocoa(RAC)原理分析
- iOS- ReactiveCocoa-RAC-1
- IOS响应式编程框架ReactiveCocoa(RAC)使用示例
- IOS响应式编程框架ReactiveCocoa(RAC)使用示例
- IOS响应式编程框架ReactiveCocoa(RAC)使用示例
- IOS响应式编程框架ReactiveCocoa(RAC)使用示例
- IOS响应式编程框架ReactiveCocoa(RAC)使用示例
- codevs1951,sdoi2013森林,启发式合并好题
- js案例之全选与下拉列表左右选择
- 007
- linux下SVN服务端配置
- thinkphp四种url访问方式详解
- iOS开发之ReactiveCocoa框架(RAC)第一篇
- sourcelnsight
- PAT (Advanced Level) Practise 1073 Scientific Notation(20)
- hibernate缓存
- SpringMvc+POI 处理Excel的导入操作
- 如果偷偷把自己的工作自动化,不告诉老板,有错吗?
- 自己出的垃圾RMQ COGS-组卡组
- 注解在Android中的应用
- 合并石头