Possible Duplicate:
Can you make an incrementing compiler constant?
示例:我尝试这样做:

static NSInteger stepNum = 1;
#define METHODNAME(i) -(void)step##i
#define STEP METHODNAME(stepNum++)

@implementation Test

STEP {
    // do stuff...

    [self nextFrame:@selector(step2) afterDelay:1];
}

STEP {
    // do stuff...

    [self nextFrame:@selector(step3) afterDelay:1];
}

STEP {
    // do stuff...

    [self nextFrame:@selector(step4) afterDelay:1];
}

// ...

在构建时,Xcode抱怨它不能增加stepNum这在我看来是合乎逻辑的,因为此时代码不是“活动的”,而且这种预处理替换的事情在实际编译源代码之前发生有没有另一种方法可以让变量在每次使用STEP宏时递增,简单的方法?

最佳答案

在我看来,最根本的问题是拥有这些编号的变量,它们实际上只是一个穷人的数组在Objective-C中,数组是实现这一点的惯用方法。

09-11 19:27