#define 改变多参数方法名

#define change multi-parameter method name

我有办法

- (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 方法一无所知。

基本上,预处理器将令牌流作为输入并生成令牌流作为输出。由于它不解析令牌流,因此它没有 Objective-C 方法、C++ 模板或任何其他涉及标识符语义的概念。