iOS开发 「RAC」RAC常见宏方法的妙用

2021-11-02  本文已影响0人  俺不是大佬儿

一、

RAC(TARGET, [KEYPATH, [NIL_VALUE]]):用于给某个对象的某个属性绑定

 // 给某个对象的某个属性绑定一个信号,只要产生信号,就会把信号的内容给对象的属性进行赋值
 // 给label的text属性绑定一个输入值的信号
 RAC(self.titleLabel,text) = RACObserve(self, inputContentText);

二、

RACObserve(TARGET, KEYPATH):监听某个对象的某个属性,返回的是一个信号

// 监听某个对象的某个属性
//监听viewModel的backgroundColor
    @weakify(self);
    [[RACObserve(self, viewModel.backgroundColor) ignore:nil] subscribeNext:^(UIColor  *_Nullable bgColor) {
        @strongify(self);
        self.backgroundColor = bgColor;
    }];

三、

@weakify(Obj)@strongify(Obj),这两个一般是配套使用,解决循环引用问题

// 监听某个对象的某个属性
//监听viewModel的backgroundColor
    @weakify(self); //解决循环引用问题
    [[RACObserve(self, viewModel.backgroundColor) ignore:nil] subscribeNext:^(UIColor  *_Nullable bgColor) {
        @strongify(self);
        self.backgroundColor = bgColor;
    }];

四、

RACTuplePack:把数据包装成RACTuple(元组类),被包装的数据必须是 object类数据

   // RACTuplePack:把一些数据包装成元组类,可用于信号间的数据传输
   // 注意:被包装的数据必须是 object类数据
   RACTuple *tuple = RACTuplePack(@"数据1",@1,@[@"1",@"2",@"3",@"4"]);

五、

RACTupleUnpack:把RACTuple(元组类)解包成对应的数据,解包参数的顺序及数据类型要和包装数据时的顺序及类型保持一致

  // 参数:需要解析数据生成出来对应的变量名
  // 注意:解包参数的顺序及数据类型要和包装数据时的顺序及类型保持一致
  RACTupleUnpack(NSString  *str,NSNumber  *num, NSArray *arr) = tuple;

\color{gray}{欢迎大佬来指正纠错,共同学习😏!}

上一篇 下一篇

猜你喜欢

热点阅读