美文网首页
iOS开发 「RAC」RAC中可以替代代理的方法rac_sign

iOS开发 「RAC」RAC中可以替代代理的方法rac_sign

作者: 俺不是大佬儿 | 来源:发表于2021-09-19 15:53 被阅读0次

第一种:代替代理


//以UIAlertViewDelegate为例用rac_signalForSelector
//实现- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex代理方法
[[self rac_signalForSelector:@selector(alertView:clickedButtonAtIndex:) fromProtocol:@protocol(UIAlertViewDelegate)] subscribeNext:^(RACTuple * _Nullable tup) {
        if(tup){
            RACTupleUnpack(UIAlertView *alert,NSNumber *buttonIndex) = tup;
            NSInteger seIndex = [buttonIndex integerValue];
            NSString *btnTitle = [alert buttonTitleAtIndex:seIndex];
            if(alert.tag == 1000){
                 NSLog(@"btnTitle = %@",btnTitle);
                }
            }
        }
 }];

第二种:监听某个对象调用某个方法


// RAC方法:可以判断某个方法有没有调用
// 只要self调用Selector就会产生一个信号
// rac_signalForSelector:监听某个对象调用某个方法
[[self rac_signalForSelector:@selector(loadAdvertisementsData)] subscribeNext:^(id x) {
  NSLog(@"控制器调用了loadAdvertisementsData");
}];
// 判断下_btn有没有调用btnClick,有信号就表示点击了按钮
[[_btn rac_signalForSelector:@selector(btnClick:)] subscribeNext:^(id x) {
   NSLog(@"点击了按钮");
}];

欢迎大佬儿来指正纠错,共同学习

相关文章

网友评论

      本文标题:iOS开发 「RAC」RAC中可以替代代理的方法rac_sign

      本文链接:https://www.haomeiwen.com/subject/dixpgltx.html