带有Block的系统通知NSNotification

系统自带的NSNotification,我们要实现一个selector方法,这样用起来可能不太方便,而且个人感觉代码也没有用Block那么直观。

带有Block的系统通知NSNotification_第1张图片
系统的用法

于是我就想着 给NSNotificationCenter添加一个分类,实现Block的NSNotification,最后用起来是这样子的。

带有Block的系统通知NSNotification_第2张图片
自定义的用法

下面我再讲一下实现这个分类的思路

先增加一个观察者

添加了观察者之后,但是observer并没有NSNotificationCenterSEL_name这个方法,于是我就想到了利用runtime给observer动态添加一个NSNotificationCenterSEL_name方法。

第一个参数:需要添加方法的类名

第二个参数:需要添加的方法名

第三个参数:添加方法的实现

第四个参数:"v@:@"  v  方法的返回值是void  @ 表示self  : 表示SEL

这个"v@:@"的意思是

添加NSNotificationCenterSEL_name方法之后,我们这个方法里面实现什么呢,就是要实现我们的Block,添加观察者时传进来的。

这时我们就需要给observer绑定一个Block属性,同样是利用runtime

最后我们在NSNotificationCenterSEL_name方法里面调用Block就行了

最终的代码就是这样的

带有Block的系统通知NSNotification_第3张图片

你可能感兴趣的:(带有Block的系统通知NSNotification)