系統(tǒng)自帶的NSNotification,我們要實(shí)現(xiàn)一個selector方法,這樣用起來可能不太方便,而且個人感覺代碼也沒有用Block那么直觀。

系統(tǒng)的用法
于是我就想著 給NSNotificationCenter添加一個分類,實(shí)現(xiàn)Block的NSNotification,最后用起來是這樣子的。

自定義的用法
下面我再講一下實(shí)現(xiàn)這個分類的思路
先增加一個觀察者

添加了觀察者之后,但是observer并沒有NSNotificationCenterSEL_name這個方法,于是我就想到了利用runtime給observer動態(tài)添加一個NSNotificationCenterSEL_name方法。

第一個參數(shù):需要添加方法的類名
第二個參數(shù):需要添加的方法名
第三個參數(shù):添加方法的實(shí)現(xiàn)
第四個參數(shù):"v@:@"? v? 方法的返回值是void? @ 表示self? : 表示SEL
這個"v@:@"的意思是
添加NSNotificationCenterSEL_name方法之后,我們這個方法里面實(shí)現(xiàn)什么呢,就是要實(shí)現(xiàn)我們的Block,添加觀察者時傳進(jìn)來的。
這時我們就需要給observer綁定一個Block屬性,同樣是利用runtime

最后我們在NSNotificationCenterSEL_name方法里面調(diào)用Block就行了
最終的代碼就是這樣的
