7.1 代替代理:
rac_signalForSelector:用於替代代理。
[[self rac_signalForSelector:@selector(userDidScroll:toPhotoAtIndex:) fromProtocol:@protocol(FRPFullSizePhotoViewControllerDelegate)] subscribeNext:^(RACTuple *value) {
@strongify(self);
[self.collectionView scrollToItemAtIndexPath:[NSIndexPath indexPathForItem:[value.second integerValue] inSection:0] atScrollPosition:UICollectionViewScrollPositionCenteredVertically animated:NO];
}];
[[self rac_signalForSelector:@selector(collectionView:didSelectItemAtIndexPath:) fromProtocol:@protocol(UICollectionViewDelegate)] subscribeNext:^(RACTuple *arguments) {
@strongify(self);
NSIndexPath *indexPath = arguments.second;
FRPFullSizePhotoViewModel *viewModel = [[FRPFullSizePhotoViewModel alloc] initWithPhotoArray:self.viewModel.model initialPhotoIndex:indexPath.item];
FRPFullSizePhotoViewController *viewController = [[FRPFullSizePhotoViewController alloc] init];
viewController.viewModel = viewModel;
viewController.delegate = (id<FRPFullSizePhotoViewControllerDelegate>)self;
[self.navigationController pushViewController:viewController animated:YES];
}];
複製程式碼
2、 代替KVO :
rac_valuesAndChangesForKeyPath:用於監聽某個物件的屬性改變。 3、 監聽事件:
rac_signalForControlEvents:用於監聽某個事件。 4、 代替通知:
rac_addObserverForName:用於監聽某個通知。 5、 監聽文字框文字改變:
rac_textSignal:只要文字框發出改變就會發出這個訊號。 6、 處理當介面有多次請求時,需要都獲取到資料時,才能展示介面
rac_liftSelector:withSignalsFromArray:Signals:當傳入的Signals(訊號陣列),每一個signal都至少sendNext過一次,就會去觸發第一個selector引數的方法。 使用注意:幾個訊號,引數一的方法就幾個引數,每個引數對應訊號發出的資料。