/**
* RAC有许多强大而方便的宏。
*/
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
[self testAndtest2];
}
/**
*RAC宏
*/
- (void)test
{
// RAC:把一个对象的某个属性绑定一个信号,只要发出信号,就会把信号的内容给对象的属性赋值
// 给label的text属性绑定了文本框改变的信号
RAC(self.label, text) = self.textField.rac_textSignal;
// [self.textField.rac_textSignal subscribeNext:^(id x) {
// self.label.text = x;
// }];
}
/**
* KVO
* RACObserveL:快速的监听某个对象的某个属性改变
* 返回的是一个信号,对象的某个属性改变的信号
*/
- (void)test2 {
[RACObserve(self.view, center) subscribeNext:^(id x) {
NSLog(@"%@", x);
}];
}
- (void)testAndtest2 // textField输入的值赋值给label,监听label文字改变,
{
RAC(self.label, text) = self.textField.rac_textSignal;
[RACObserve(self.label, text) subscribeNext:^(id x) {
NSLog(@"====label的文字变了");
}];
}
/**
* 循环引用问题
*/
- (void)test3 {
@weakify(self)
RACSignal *signal = [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
@strongify(self)
NSLog(@"%@",self.view);
return nil;
}];
_signal = signal;
}
/**
* 元祖
* 快速包装一个元组
* 把包装的类型放在宏的参数里面,就会自动包装
*/
- (void)test4 {
RACTuple *tuple = RACTuplePack(@1,@2,@4);
// 宏的参数类型要和元祖中元素类型一致, 右边为要解析的元祖。
RACTupleUnpack_(NSNumber *num1, NSNumber *num2, NSNumber * num3) = tuple;// 4.元祖
// 快速包装一个元组
// 把包装的类型放在宏的参数里面,就会自动包装
NSLog(@"%@ %@ %@", num1, num2, num3);
}
ReactiveCocoa(十)之RAC常用宏
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 注:转载自http://blog.csdn.net/y_csdnblog_xx/article/details/5...
- 信号signal是RAC的绝对核心,所有的操作都是围绕着信号来处理的。比如:创建信号,订阅信号,发送信号是消息发送...