iOS 개발 중 RAC 감청 버튼 클릭 이벤트

1237 단어

좋은 점


Block 리셋 단추를 누르면 이벤트가 더욱 뚜렷합니다.

코드:

// RAC         
[[redBtn rac_signalForControlEvents:UIControlEventTouchUpInside] subscribeNext:^(__kindof UIControl * _Nullable x) {
    NSLog(@"    ...");
    NSLog(@"x:%@", x);
}];

내부 코드 보기:

- (RACSignal *)rac_signalForControlEvents:(UIControlEvents)controlEvents {
@weakify(self);

return [[RACSignal
    createSignal:^(id subscriber) {
        @strongify(self);

        [self addTarget:subscriber action:@selector(sendNext:) forControlEvents:controlEvents];

        RACDisposable *disposable = [RACDisposable disposableWithBlock:^{
            [subscriber sendCompleted];
        }];
        [self.rac_deallocDisposable addDisposable:disposable];

        return [RACDisposable disposableWithBlock:^{
            @strongify(self);
            [self.rac_deallocDisposable removeDisposable:disposable];
            [self removeTarget:subscriber action:@selector(sendNext:) forControlEvents:controlEvents];
        }];
    }]
    setNameWithFormat:@"%@ -rac_signalForControlEvents: %lx", RACDescription(self), (unsigned long)controlEvents];
}  

좋은 웹페이지 즐겨찾기