我有一个方法
- (void)hello:(NSString *)a world:(NSString *)b
我想重命名(使用预处理器宏)
- (void)hello_obf:(NSString *)a world_obf:(NSString *)b
所以我试过了
#define hello:world hello_obf:world_obf
这实际上不起作用,是否有任何解决方案可以使用 #define 重命名多参数 objective-c 方法?
我找到的唯一解决方案是单独定义方法名称,例如。
#define hello hello_obf
#define world world_obf
这对我不起作用,因为它会弄乱我的其他代码。
最佳答案
简短回答:否。
预处理发生在任何类型的语义甚至句法分析之前。预处理器对其正在处理的程序的结构一无所知,因为该结构尚未定义。所以它对 Objective-C 方法一无所知。
基本上,预处理器将 token 流作为输入并生成 token 流作为输出。由于它不解析 token 流,因此它没有 Objective-C 方法、C++ 模板或任何其他涉及标识符语义的概念。
关于ios - #define 改变多参数方法名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57099018/