示例:我想这样做:
METHODNAME(5) {
// do something
}
导致:
- (void)animationStep5 {
// do something
}
有没有办法做到这一点?基本上,我需要的是在编译程序之前生成真正的源代码字符串的方法,因此编译器确实看到- (void)animationStep5
...
或许有一些不同于宏的东西,这可以帮助自动生成方法名称(不是在运行时)?
答案 0 :(得分:2)
正如已经回答的here,Objective-C预处理器非常接近C语言。
您应该查看那里发布的示例,并查看C proprocessor。您只需使用预处理器的##
语法来连接方法名称和所需的数字。
答案 1 :(得分:1)
假设objective-c预处理器的行为与标准C预处理器的行为相同,您可以使用以下内容:
#define PASTE(a, b) a##b
#define METHODNAME(n) PASTE(animationStep,n)
将所需的位加在一起。这意味着
METHODNAME(5)
被翻译为
animationStep5
(您可能需要将问题中的“void”添加到宏definitino,具体取决于您需要做什么)。
答案 2 :(得分:1)
您可以使用连接运算符
#define METHODNAME(i) -(void)animationStep##i
你可以称之为
METHODNAME(5){}
这扩大到了
-(void)animationStep5{}