系统自带的NSNotification,我们要实现一个selector方法,这样用起来可能不太方便,而且个人感觉代码也没有用Block那么直观。
于是我就想着 给NSNotificationCenter添加一个分类,实现Block的NSNotification,最后用起来是这样子的。
下面我再讲一下实现这个分类的思路
先增加一个观察者
添加了观察者之后,但是observer并没有NSNotificationCenterSEL_name这个方法,于是我就想到了利用runtime给observer动态添加一个NSNotificationCenterSEL_name方法。
第一个参数:需要添加方法的类名
第二个参数:需要添加的方法名
第三个参数:添加方法的实现
第四个参数:"v@:@" v 方法的返回值是void @ 表示self : 表示SEL
这个"v@:@"的意思是
添加NSNotificationCenterSEL_name方法之后,我们这个方法里面实现什么呢,就是要实现我们的Block,添加观察者时传进来的。
这时我们就需要给observer绑定一个Block属性,同样是利用runtime
最后我们在NSNotificationCenterSEL_name方法里面调用Block就行了
最终的代码就是这样的