[self rac_liftSelector:(SEL) withSignalsFromArray:(NSArray *)];
使用場景:當(dāng)有多個任務(wù)執(zhí)行時,全部執(zhí)行完畢才能執(zhí)行其他操作,注意方法的參數(shù)必須跟后面信號一一對應(yīng)不然就會報錯,方法的參數(shù)就是每個信號發(fā)送的數(shù)據(jù).
- 代碼:
//1. rac_lift調(diào)用
RACSignal *signal1 = [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
NSLog(@"任務(wù)1");
[subscriber sendNext:@"數(shù)據(jù)1"];
return nil;
}];
RACSignal *signal2 = [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
NSLog(@"任務(wù)2");
[subscriber sendNext:@"數(shù)據(jù)2"];
return nil;
}];
[self rac_liftSelector:@selector(updateUIWithData1:data2:) withSignalsFromArray:@[signal1,signal2]];
//2. 任務(wù)完成后方法
- (void)updateUIWithData1:(NSString *)data1 data2:(NSString *)data2 {
NSLog(@"data1:%@data2:%@",data1,data2);
}
RAC常見的宏.
- 1. RAC(<#TARGET, ...#>) 用來給某個對象的某個屬性綁定信號,只要產(chǎn)生信號內(nèi)容就會把內(nèi)容給屬性賦值.
RAC(<#TARGET, ...#>)
//只要_textField值改變前面label中text就會改變?yōu)橄鄳?yīng)內(nèi)容
RAC(_label,text) = _textField.rac_textSignal;
- 2. RACObserve(<#TARGET#>, <#KEYPATH#>)監(jiān)聽對象的屬性:
RACObserve(<#TARGET#>, <#KEYPATH#>)
[RACObserve(self.reaVIew, frame) subscribeNext:^(id x) {
NSLog(@"對象屬性一改變就會被調(diào)用");
}];
- 防止blcok循環(huán)引用:
@weakify(self);
@strongify(self);
-
封裝集合
RACTuplePack(<#...#>):把數(shù)據(jù)包裝成元組,返回值為元組.
RACTupleUnpack(<#...#>):把元組解包成對應(yīng)數(shù)據(jù).
-
封裝集合
//RACTuplePack
RACTuple *tuple = RACTuplePack(@"12",@"3232");
NSLog(@"%@",tuple[0]);
//RACTupleUnpack
RACTupleUnpack(NSString *str1,NSString *str2) = tuple;
NSLog(@"%@--%@",str1,str2);