我有方法
- (void)hello:(NSString *)a world:(NSString *)b
我想重命名(使用预处理器宏)
- (void)hello_obf:(NSString *)a world_obf:(NSString *)b
所以我尝试过
#define hello:world hello_obf:world_obf
这实际上不起作用,是否有任何解决方法可以使用 #define 重命名多参数目标c方法?
我发现的唯一解决方案是单独定义方法名称,例如。
#define hello hello_obf
#define world world_obf
这对我不起作用,因为它会弄乱我的其他代码。
答案 0 :(得分:1)
简短答案:否
预处理发生在任何类型的语义甚至语法分析之前。预处理器对正在处理的程序的结构一无所知,因为尚未定义结构。因此,它对Objective-C方法一无所知。
基本上,预处理器将令牌流作为输入,并生成令牌流作为输出。由于它不解析令牌流,因此它没有Objective-C方法或C ++模板的概念,也没有涉及标识符语义的其他任何概念。