博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
reactiveCocoa使用
阅读量:5058 次
发布时间:2019-06-12

本文共 1228 字,大约阅读时间需要 4 分钟。

@代理

   简介:使用RACSubject信号替换

   控制器2的操作:

   <1在头文件定义一个信号:

      @property (nonatomic, strong) RACSubject *delegateSignal;

   <2在响应操作内发送信号:

     if (self.delegateSignal) {

            // 有值,才需要通知

            1[self.delegateSignal sendNext:self.clock];

           // 注意,加上这一句,有时才不会被多次调用

             2[self.delegateSignal sendCompleted];          

        }

  控制器1的操作

   <1设置信号   (而并不是成为VC1的代理)

    editVC.delegateSignal = [RACSubject subject];

   

   <2订阅信号

    [editVC.delegateSignal subscribeNext:^(id x) {

        //remove

        DJTimeClock *clock = (DJTimeClock *)x;

        DJLog(@"come");

    }];

 

 

 

 

@通知

 

@KVO

   简介:主要是增强了系统的NSNotificationCenter对象。

1通知方的发布操作
NSMutableArray *dataArray = [[NSMutableArray alloc] initWithObjects:@"1", @"2", @"3", nil];[[NSNotificationCenter defaultCenter] postNotificationName:@"postData" object:dataArray];
 

   2接收方的订阅操作

[[[NSNotificationCenter defaultCenter] rac_addObserverForName:@"postData" object:nil] subscribeNext:^(NSNotification *notification) {    NSLog(@"%@", notification.name);    NSLog(@"%@", notification.object);}];

   注意点

   1接收方的订阅操作方法,要在viewDidLoad方法调用

 

 

 

 

 

我的理解

1通过block把按钮的addtarget的监听,处理,两个步骤二合一了,

  好处是若在本控制器内添加监听,更方便

  在自定义类监听就不一定了,因为经常监听到了,不一定就是自己处理,一般另外通知控制器,此时仍然用自己的block更好

  尤其自定义类,监听多个子控件时,用rac需要每次自己实现block,用老方法,只需一个地方即可。

2好处

  <1很多地方,省略了一个外部的target响应方法

  <2响应不需要跨方法,意味着可以省略一个成员变量

转载于:https://www.cnblogs.com/dzq1991/p/6237835.html

你可能感兴趣的文章
ABAP工作区,内表,标题行的定义和区别
查看>>
《xxx重大需求征集系统的》可用性和可修改性战术分析
查看>>
Python 中 创建类方法为什么要加self
查看>>
关于indexOf的使用
查看>>
【转】JS生成 UUID的四种方法
查看>>
英语单词
查看>>
centos6.8下安装matlab2009(图片转帖)
查看>>
Mongo自动备份
查看>>
求助大神!怎样批量删除数据库表中某个字段中同样的一段字符!
查看>>
VMWARE虚拟机无法访问的三种方法分析
查看>>
enq: SQ - contention
查看>>
cer证书签名验证
查看>>
面向对象设计
查看>>
ant 安装
查看>>
新手Python第一天(接触)
查看>>
vue路由动态加载
查看>>
【原】UIWebView加载本地pdf、doc等文件
查看>>
iOS中ARC内部原理
查看>>
【bzoj1029】[JSOI2007]建筑抢修
查看>>
synchronized
查看>>