ReactiveCocoa开发中常见用法

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参数的方法。
使用注意:几个信号,参数一的方法就几个参数,每个参数对应信号发出的数据。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容