zoukankan      html  css  js  c++  java
  • RAC初步使用

    信号基本流程:

      

        //1:创建信号
        RACSignal *signal = [RACSignal createSignal:^RACDisposable * _Nullable(id<RACSubscriber>  _Nonnull subscriber) {
            
            //subscriber 对象不是一个对象
            //3:发送信号
            [subscriber sendNext:@"Cooci"];
            
            //请求网络 失败 error
            NSError *error = [NSError errorWithDomain:NSURLErrorDomain code:10086 userInfo:@{@"key":@"10086错误"}];
            
            [subscriber sendError:error];
            //        [subscriber sendCompleted];
            
            //4.RACDisposable 销毁
            
            return [RACDisposable disposableWithBlock:^{
                
                NSLog(@"销毁了");
            }];
        }];
        
        
        //2:订阅信号
        [signal subscribeNext:^(id  _Nullable x) {
            
            NSLog(@"%@",x);
        }];
        
        //订阅错误信号
        
        [signal subscribeError:^(NSError * _Nullable error) {
            
            NSLog(@"%@",error);
        }];
        
    View Code

    一: KVO

        [RACObserve(self, name) subscribeNext:^(id  _Nullable x) {
            
            NSLog(@"%@",x);
            
        }];
    View Code

    二: 通知

        [[[NSNotificationCenter defaultCenter] rac_addObserverForName:UIKeyboardWillShowNotification object:nil] subscribeNext:^(NSNotification * _Nullable x) {
            
            NSLog(@"%@",x);
        }];
    View Code

    三: 代理

        [[self rac_signalForSelector:@selector(textFieldDidEndEditing:) fromProtocol:@protocol(UITextFieldDelegate)] subscribeNext:^(RACTuple * _Nullable x) {
            
        }];
    View Code

    四: target

        //Button
        [[self.button rac_signalForControlEvents:UIControlEventTouchUpInside] subscribeNext:^(__kindof UIControl * _Nullable x) {
            
        }];
        
        //UITextField
        [[self.textField rac_textSignal] subscribeNext:^(NSString * _Nullable x) {
            //x 为textField 中输入的text
        }];
        
        //UITapGestureRecognizer
        UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] init];
        self.label.userInteractionEnabled = YES;
        [self.label addGestureRecognizer:tap];
        
        [[tap rac_gestureSignal] subscribeNext:^(__kindof UIGestureRecognizer * _Nullable x) {
            
        }];
    View Code

    五: timer

        [[RACSignal interval:1 onScheduler:[RACScheduler scheduler]] subscribeNext:^(NSDate * _Nullable x) {
            
            NSLog(@"%@",[NSThread currentThread]);
            
        }];
    View Code

    六: 结构

        //数组
        NSArray *array = @[@"Kobe",@"laker",@"34"];
        
        [array.rac_sequence.signal subscribeNext:^(id  _Nullable x) {
            //子线程
            NSLog(@"%@",[NSThread currentThread]);
            NSLog(@"数组%@",x);
        }];
        
        /**
         2018-11-21 18:53:24.318270+0800 001---RAC初探[12854:18767540] <NSThread: 0x600002909200>{number = 3, name = (null)}
         2018-11-21 18:53:24.318529+0800 001---RAC初探[12854:18767540] 数组Kobe
         2018-11-21 18:53:24.319043+0800 001---RAC初探[12854:18767540] <NSThread: 0x600002909200>{number = 3, name = (null)}
         2018-11-21 18:53:24.319139+0800 001---RAC初探[12854:18767540] 数组laker
         2018-11-21 18:53:24.319340+0800 001---RAC初探[12854:18767540] <NSThread: 0x600002909200>{number = 3, name = (null)}
         2018-11-21 18:53:24.319398+0800  <NSThread: 0x600002909240>{number = 4, name = (null)}
         2018-11-21 18:53:24.319444+0800 001---RAC初探[12854:18767540] 数组34
    
         */
        
        NSDictionary *dict = @{@"name":@"James",@"age":@"18",@"gender":@"1"};
        
        [dict.rac_sequence.signal subscribeNext:^(id  _Nullable x) {
            
            NSLog(@"%@",[NSThread currentThread]);
    
            //元祖
            NSLog(@"字典%@",x);
            
            RACTwoTuple *tuple = (RACTwoTuple *)x;
            
            NSLog(@"key == %@ , value = %@",tuple[0],tuple[1]);
            
        }];
        
        /**
         2018-11-21 18:53:24.319584+0800  字典<RACTwoTuple: 0x600003e7f0a0> (
         name,
         James
         )
         2018-11-21 18:53:24.319666+0800  key == name , value = James
         2018-11-21 18:53:24.319899+0800  <NSThread: 0x600002909240>{number = 4, name = (null)}
         2018-11-21 18:53:24.320207+0800  字典<RACTwoTuple: 0x600003e7f070> (
         age,
         18
         )
         2018-11-21 18:53:24.320494+0800  key == age , value = 18
         2018-11-21 18:53:24.342978+0800  <NSThread: 0x600002909240>{number = 4, name = (null)}
         2018-11-21 18:53:24.343114+0800  字典<RACTwoTuple: 0x600003e68950> (
         gender,
         1
         )
         2018-11-21 18:53:24.343201+0800  key == gender , value = 1
    
         */
    View Code
  • 相关阅读:
    分部视图
    linq的几个方法
    如何让服务器支持mp4文件下载和sqlserver将表生成为sql语句方法
    在asp.net mvc中导出Excel文件
    Linq2EF操作中的两个小问题
    JSON到底是什么?
    连接跟踪(conntrack):原理、应用及 Linux 内核实现 转载
    没有安全,没有隐私
    互联网发展到今天,我们要做的,是用机器解决人类解决不了的问题。在这个意义上,比起人工智能,机器智能这个词更加准确。
    今天,世界各国城市的可持续发展面临很大挑战,这些挑战也带来了一个难得的机遇,就是利用机器智能解决城市发展过程中许多重要的问题,如交通治理。同时这也是像机器智能这样的新一代技术快速发展的机遇,这正是我全身心推动城市大脑的原因
  • 原文地址:https://www.cnblogs.com/jiefangzhe/p/9996965.html
Copyright © 2011-2022 走看看