前言
之前在講 UIResponder
路由時吱殉,
可以通過UIResponder
一層一層往上傳掸冤,同時可添加額外參數(shù)。這是優(yōu)點友雳。
缺點就是:
當(dāng)把一個view
添加到加一個view
的window
時稿湿,回傳事件會被打斷!Q荷蕖饺藤!
正題 - Aspects
利用 Aspects
Hook 某個 view 的某個方法
3 種操作:
-
前
:在原方法前調(diào)用 -
中
:直接替換原方法 -
后
:在原方法后調(diào)用
在這里,使用中
某個視圖嵌套層級比較多流礁,又不能使用UIResponde
r時涕俗,就可以考慮用Aspects
舉個粟子
假如你有一個viewA
,
要通過按鈕點擊調(diào)用方法:buttonClick:
一層一層往上回傳事件到控制器
原始的方法是通過delegate
或者 block
神帅,一層套一層再姑,一層套一層……
現(xiàn)在,可以直接在控制器里面這樣操作了:
UIViewA *viewA = [UIViewA new];
[self.view addSubview:viewA];
[viewA aspect_hookSelector:@selector(buttonClick:) withOptions:AspectPositionInstead usingBlock:^(id<AspectInfo> info, UIButton *button){
NSLog(@"點擊了按鈕 %@",button);
// code goes here
} error:nil];