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;