0
点赞
收藏
分享

微信扫一扫

【iOS 1 行代码系列】之 一行代码告别复杂视图的 delegate 和 block [续]


之前在讲 ​​UIResponder​​​ 路由时,
可以通过​​​UIResponder​​​一层一层往上传,同时可添加​​额外参数​​​。这是优点。
缺点就是:
当把一个​​​view​​​ 添加到加一个​​view​​​ 的​​window​​ 时,回传事件会被打断!!!

正题 - Aspects

利用 ​​Aspects​​​ Hook 某个 ​​view​​​ 的某个方法
3 种操作:
- 前:在原方法前调用
- 中:直接替换原方法
- 后:在原方法后调用
在这里,使用 ​​​中​

某个视图嵌套层级比较多,又不能使用​​UIResponder​​​时,就可以考虑用​​Aspects​

举个粟子

假如你有一个​​viewA​​​,
要通过按钮点击调用方法:​​​buttonClick:​​​
一层一层往上回传事件到控制器
原始的方法是通过 ​​​delegate​​​ 或者 ​​block​​,一层套一层,一层套一层……

现在,可以直接在控制器里面这样操作了:

self.view addSubview:viewA];

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


举报

相关推荐

0 条评论