iOS开发之旅--ReactiveCocoa使用小结2
Go on!
先祝福孩子儿童节快乐!
未看第一篇博客的可以先看第一篇:ReactiveCocoa使用小结,欢迎交流
今天简单介绍RAC中**rac_signalForSelector 、 rac_signalForControlEvents **的使用,
首先是delegate
delegate分为库定义和自己定义的。本文中主要讲解库定义的delegate的使用细节及技巧。
本文用常用的tableview做的例子,源码:TP
使用细节:只能用于无返回值的函数,具有返回值的函数不适合此方法,如果你真的想把所有的delegate使用block写法,那么推荐你使用这个三方库:Aspects,
我们绑定信号应该在设置delegate的前面,具体可以看代码,可供测试。
我们可以通过这种写法重新封装一个常用控件的分类来使用,
其次是按钮点击事件的绑定监听
已有按钮点击事件可以通过下面的方法实现
[[self.btn rac_signalForControlEvents:UIControlEventTouchUpInside] subscribeNext:^(id x) {
[[ShowPromptMessage sharedManager] showPromptMessage:@"按钮点击事件委托交给rac处理"];
}];
自定义按钮的点击事件,我们平时的方法是:
[myButton addTarget:self action:@selector(click:) forControlEvents:UIControlEventTouchUpInside];
//现在可以这样
[[myButton rac_signalForControlEvents:UIControlEventTouchUpInside] subscribeNext:^(id x) {
[[ShowPromptMessage sharedManager] showPromptMessage:@"测试自己创建按钮点击事件"];
}];
可以方便很多,点击事件的代码不需要去另一个地方找,直接就可以看到。
然后用来监听方法有没有执行的一个很好的办法
具体常用如下:
- (void)viewDidLoad {
[[self rac_signalForSelector:@selector(goodBoy)] subscribeNext:^(id x) {
NSLog(@"****goodBoy*****");
}];
//这个都需要放在监听后面,不然你都执行完了,才设置监听岂不是浪费了
最后是对通知的重写
话不多说,直接看代码。
//我们平时的代码,先添加通知,然后下面需要再实现一个方法,这里只需要这样。
//👌监听通知
[[[NSNotificationCenter defaultCenter] rac_addObserverForName:@"xiaoshiceshi" object:nil] subscribeNext:^(id x) {
[[ShowPromptMessage sharedManager] showPromptMessage:@"上面点击事件给我发来通知"];
}];