天天看點

【iOS 1 行代碼系列】之 一行代碼告别複雜視圖的 delegate 和 block [續]

之前在講 ​

​UIResponder​

​​ 路由時,

可以通過​​

​UIResponder​

​​一層一層往上傳,同時可添加​

​額外參數​

​​。這是優點。

缺點就是:

當把一個​​

​view​

​​ 添加到加一個​

​view​

​​ 的​

​window​

​ 時,回傳事件會被打斷!!!

正題 - Aspects

利用 ​

​Aspects​

​​ Hook 某個 ​

​view​

​​ 的某個方法

3 種操作:

- 前:在原方法前調用

- 中:直接替換原方法

- 後:在原方法後調用

在這裡,使用 ​​

​中​

某個視圖嵌套層級比較多,又不能使用​

​UIResponder​

​​時,就可以考慮用​

​Aspects​

舉個粟子

self.view addSubview:viewA];

    [viewA aspect_hookSelector:@selector(buttonClick:) withOptions:AspectPositionInstead usingBlock:^(id<AspectInfo> info, UIButton *button){
     NSLog(@"點選了按鈕 %@",button);
     // code goes here
    } error:nil];