iOS 개발 RAC 학습 노트(8) 신호의 스케줄러 RACscheduler(스레드)

1901 단어
github 소스 코드 주소
신호 스케줄러 RACscheduler(다중 스레드)
deliverOn
지난 편에서 RAC의 부작용에 대해 말했듯이 deliverOn은 내용 전달을 지정된 라인으로 전환하고 부작용은 여전히 지정된 라인에서 실행된다
    //    
    -(void)createUpSignals{

    RACSignal * signal = [RACSignal createSignal:^RACDisposable *(id subscriber) {

        NSLog(@"sendTestSignal%@",[NSThread currentThread]);

        [subscriber sendNext:@1];

        [subscriber sendCompleted];

        return [RACDisposable disposableWithBlock:^{

                }];
        }];

    self.testSignal = signal;

    }

    //    
    //            [RACScheduler scheduler]   [RACScheduler mainThreadScheduler]
    [[self.testSignal deliverOn:[RACScheduler scheduler]] subscribeNext:^(id x) {

        NSLog(@"receiveSignal%@",[NSThread currentThread]);

    }];
  • 인쇄 결과는 다음과 같다
      2016-09-02 09:48:59.697 Signal processing[1686:22894] sendTestSignal{number = 1, name = main}
      2016-09-02 09:48:59.697 Signal processing[1686:24680] receiveSignal{number = 3, name = (null)}
    
  • subscribeOn은 전송 내용과 부작용을 지정한 라인에 함께 실행합니다
        [[[RACSignal createSignal:^RACDisposable *(id subscriber) {
    
            NSLog(@"sendSignal%@",[NSThread currentThread]);
    
            [subscriber sendNext:@1];
    
            return [RACDisposable disposableWithBlock:^{
    
                    }];
    
        }] subscribeOn:[RACScheduler scheduler]] subscribeNext:^(id x) {
    
            NSLog(@"receiveSignal%@",[NSThread currentThread]);
    
        }];
    
  • 인쇄 결과는 다음과 같다
      2016-09-02 09:54:47.819 Signal processing[1778:54504] sendSignal{number = 2, name = (null)}
      2016-09-02 09:54:47.819 Signal processing[1778:54504] receiveSignal{number = 2, name = (null)}
  • 좋은 웹페이지 즐겨찾기