• reactiveCocoa使用


    @代理

       简介:使用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响应不需要跨方法,意味着可以省略一个成员变量

  • 相关阅读:
    [转]UIWebView 监控 XMLHttpRequest
    viewDidMoveToWindow:shouldAppearOrDisappear:
    [转]iAP Cracker for iPhone/iPod/iPad
    关于替换 UIWebView 网络模块的一些初步想法
    iOS & Max_OS_X Debugging Magic
    [转]定制 iOS 键盘
    Disable & Enable xcode Indexing
    把工作做好,为了自己,不是为别人,调整下心态!
    Oracle数据库自身也提供了一种MTS的技术
    2011年终随想
  • 原文地址:https://www.cnblogs.com/dzq1991/p/6237835.html
Copyright © 2020-2023  润新知