加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ReactiveCocoa--RACDelegateProxy

发布时间:2020-12-15 04:54:38 所属栏目:百科 来源:网络整理
导读:基本信息 父类 NSObject 子类 无 类含义 RAC代理类 遵循的协议 无 属性 RACDelegateProxy *rac_delegateProxy; 参考vincenttsai 这个类平常使用中可能用的不多,比如界面中多个 UITextfield ,但是各个在代理方法中要做的事情不同,或者说有些需要实现有些不

基本信息

父类 NSObject
子类
类含义 RAC代理类
遵循的协议
属性 RACDelegateProxy *rac_delegateProxy;

参考vincenttsai

这个类平常使用中可能用的不多,比如界面中多个UITextfield,但是各个在代理方法中要做的事情不同,或者说有些需要实现有些不需要。

RACDelegateProxy *delegateProxy = [[RACDelegateProxy alloc]initWithProtocol:@protocol(UITextFieldDelegate)];
    [[delegateProxy rac_signalForSelector:@selector(textFieldShouldReturn:)] subscribeNext:^(RACTuple *args) {
        UITextField *field  = [args first];
        [field resignFirstResponder];
    }];

    self.textfield.delegate = (id<UITextFieldDelegate>)delegateProxy;

    objc_setAssociatedObject(self.textfield,_cmd,delegateProxy,OBJC_ASSOCIATION_RETAIN_NONATOMIC);

上面的代码片段就明确指定self.textfield- (BOOL)textFieldShouldReturn:(UITextField *)textField;会被执行。还需要注意的是,这里delegateProxy可能会无缘无故的被释放掉而crash,所以需要保留它,最后一句代码的作用就是这个。
虽然这个类在实际使用中作用不大,但是在RAC内部像UITextView (RACSignalSupport) UIAlertView (RACSignalSupport)都会用到


其实这里我们也可以通过这样方法实现

[[self.textfield rac_signalForControlEvents:UIControlEventEditingDidEndOnExit] subscribeNext:^(id x) {
        NSLog(@"%s",__func__);
    }];

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读