ReactiveCocoa(RAC)

好处:代码高聚合,方便我们管理;

编程思想:函数式响应编程;

链式编程:

CaculatorMaker.h

#import <Foundation/Foundation.h>
#define ADD
#define KVO
@interface CaculatorMaker : NSObject
@property (nonatomic, assign) KVO int result;
// +
- (instancetype)add:(int)num; ADD
- (CaculatorMaker *(^)(int num))add;
// -
// *
- (CaculatorMaker *(^)(int num))multy;
// /
@end

CaculatorMaker.m

#import "CaculatorMaker.h"
@implementation CaculatorMaker
//- (instancetype)add:(int)num
//{
//    _result += num;
//    return self;
//}
- (CaculatorMaker *(^)(int))multy
{
    return ^(int num){
        _result *= num;
        return self;
    };
}
- (CaculatorMaker * (^)(int num))add
{
    return ^(int num){
        _result += num;
        return self;
    };
}
@end

NSObject+Caculator.h

#import <Foundation/Foundation.h>
#import "CaculatorMaker.h"
@interface NSObject (Caculator)
// 以后计算都使用这个方法,一调用这个方法就返回结果.
+ (int)makeCaculator:(void(^)(CaculatorMaker *))block;
@end

NSObject+Caculator.m

#import "NSObject+Caculator.h"
#import "CaculatorMaker.h"
@implementation NSObject (Caculator)
+ (int)makeCaculator:(void (^)(CaculatorMaker *))block
{
    // 创建计算制造者
    CaculatorMaker *maker = [[CaculatorMaker alloc] init];
    // 计算
    block(maker);
    return maker.result;
}
@end
- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    // add(1).add(2)
    // 1.创建计算制造者
    CaculatorMaker *maker = [[CaculatorMaker alloc] init];
    // 10 + 20 + 30 + 40
    // 链式编程思想: maker.add(10).add(20).add(30).add(40)
//   int result = [maker.add(10).add(20).add(30).add(40) result];
    // 提供一个没参数的add方法,返回值block
//   int reslut = [[[[[maker add:10] add:20] add:30] add:40] result];
    // block:使代码高聚合
    int result = [NSObject makeCaculator:^(CaculatorMaker *maker) {
        // 把所有的计算代码封装到这里
        maker.add(10).add(20);
        maker.add(30).add(40);
        maker.multy(3);
    }];
    NSLog(@"%d",result);
}
时间: 2024-10-11 20:26:10

ReactiveCocoa(RAC)的相关文章

IOS响应式编程框架ReactiveCocoa(RAC)使用示例

ReactiveCocoa是响应式编程(FRP)在IOS中的一个实现框架,它的开源地址为:https://github.com/ReactiveCocoa/ReactiveCocoa# :在网上看了几篇文章,感觉理论讲了很多,但是代码还是看不太懂,于是自己把它github文档上的一些使用的经典示例实现了一下,项目中有需要时可以直接搬过去用,用的熟练了再读源码也比较容易理解. 例1. 监听对象的成员变量变化,当成员变量值被改变时,触发做一些事情. 这种情况其实就是IOS KVO机制使用的场景,使用

IOS响应式编程框架ReactiveCocoa(RAC)使用示例-备

ReactiveCocoa是响应式编程(FRP)在IOS中的一个实现框架,它的开源地址为:https://github.com/ReactiveCocoa/ReactiveCocoa# :在网上看了几篇文章,感觉理论讲了很多,但是代码还是看不太懂,于是自己把它github文档上的一些使用的经典示例实现了一下,项目中有需要时可以直接搬过去用,用的熟练了再读源码也比较容易理解. 例1. 监听对象的成员变量变化,当成员变量值被改变时,触发做一些事情. 这种情况其实就是IOS KVO机制使用的场景,使用

[HMLY]14.ReactiveCocoa 和 MVVM 入门

MVC 任何一个正经开发过一阵子软件的人都熟悉MVC,它意思是Model View Controller, 是一个在复杂应用设计中组织代码的公认模式. 它也被证实在 iOS 开发中有着第二种含义: Massive View Controller(重量级视图控制器).它让许多程序员绞尽脑汁如何去使代码被解耦和组织地让人满意. 总的来说, iOS 开发者已经得出结论: 他们需要给视图控制器瘦身, 并进一步分离事物;但该怎么做呢? MVVM 于是MVVM流行起来, 它代表Model View View

RAC和MVVM相关链接汇总

ReactiveCocoa github 地址 https://github.com/ReactiveCocoa/ReactiveCocoa RAC的中文资源整合 https://github.com/ReactiveCocoaChina/ReactiveCocoaChineseResources

【长篇高能】ReactiveCocoa 和 MVVM 入门

翻译自ReactiveCocoa and MVVM, an Introduction. 文中引用的 Gist 可能无法显示.为了和谐社会, 请科学上网. MVC 任何一个正经开发过一阵子软件的人都熟悉MVC,它意思是Model View Controller, 是一个在复杂应用设计中组织代码的公认模式. 它也被证实在 iOS 开发中有着第二种含义: Massive View Controller(重量级视图控制器).它让许多程序员绞尽脑汁如何去使代码被解耦和组织地让人满意. 总的来说, iOS

ReactiveCocoa 和 MVVM 入门

翻译自ReactiveCocoa and MVVM, an Introduction. 文中引用的 Gist 可能无法显示.为了和谐社会, 请科学上网. MVC 任何一个正经开发过一阵子软件的人都熟悉MVC,它意思是Model View Controller, 是一个在复杂应用设计中组织代码的公认模式. 它也被证实在 iOS 开发中有着第二种含义: Massive View Controller(重量级视图控制器).它让许多程序员绞尽脑汁如何去使代码被解耦和组织地让人满意. 总的来说, iOS

ReactiveCocoa 和 MVVM 入门 (转)

翻译自ReactiveCocoa and MVVM, an Introduction. 文中引用的 Gist 可能无法显示.为了和谐社会, 请科学上网. MVC 任何一个正经开发过一阵子软件的人都熟悉MVC,它意思是Model View Controller, 是一个在复杂应用设计中组织代码的公认模式. 它也被证实在 iOS 开发中有着第二种含义: Massive View Controller(重量级视图控制器).它让许多程序员绞尽脑汁如何去使代码被解耦和组织地让人满意. 总的来说, iOS

ReactiveCocoa Documents 翻译(基于版本V2.5)

1. 基本操作(Basic Operators) 描述 ReactiveCocoa 最常用的一些操作以及使用范例. 主要是如何运用 序列(sequences) 和 信号(signals) 的流操作. 用信号实现副作用(Performing side effects with signals) 订阅(Subscription) 依赖注入(Injecting effects) 流的传输(Transforming streams) 映射(Mapping) 过滤(Filtering) 流的结合(Comb

ReactiveCocoa,最受欢迎的iOS函数响应式编程库(2.5版),没有之一!

ReactiveCocoa,最受欢迎的iOS函数响应式编程库(2.5版),没有之一! 简介 项目主页: ReactiveCocoa 实例下载: https://github.com/ios122/ios122 简评: 最受欢迎,最有价值的iOS响应式编程库,没有之一!iOS MVVM模式的完美搭档,更多关于MVVM与ReactiveCocoa的讨论,参考这篇文章: [长篇高能]ReactiveCocoa 和 MVVM 入门 注意: ReactiveCocoa 最新3.0版本,使用Swift重写,