函数的滑动-以及仅在运行时已知的函数



我想在objective-c中刷新一个函数。问题是——我知道只有在运行时才需要刷新的函数。现在,代码中的不同方法将有不同的返回类型、输入参数等。

我应该如何编写一个(通用)代码,如果给定它所属的函数和类的名称,我可以创建一个块,然后使用imp_implementationWithBlock创建imp,然后用这个新创建的imp刷新原始方法。

您可以使用NSSelectorFromString()动态查找选择器名称,然后执行swizzling。有很多助手,所以我不需要重复确切的嗖嗖逻辑。例如,如果您使用Aspects,代码可能如下所示:

[_singleTapGesture aspect_hookSelector:NSSelectorFromString(@"setState:") withOptions:AspectPositionAfter usingBlock:^(id<AspectInfo> aspectInfo) {
    NSLog(@"%@: %@", aspectInfo.instance, aspectInfo.arguments);
} error:NULL];

对于运行时swizzling,您应该确保您知道自己在做什么,并且在选择器不存在的情况下正常失败。

相关内容

  • 没有找到相关文章

最新更新