在Xcode的BuldSetting中有Preprocessor Macros选项,看名知意,在这里可以预定义项目宏定义,像这样。
这里在写的时候是不建议像这种写法的
因为这样判断就表示DEBUG一定存在,项目中一些其他的写有前一种方式的代码就总是成立,不会走#else分支了。比如有人写了这样的判断来屏蔽release版本的NSLOG
这时候就起了冲突。
通常会使用宏定义作这样的代码判断
#ifdef DEBUG
verifyReceiptURL = [[[NSURL alloc] initWithString:@"https://sandbox.itunes.apple.com/verifyXXXt"] autorelease];
#else
verifyReceiptURL = [[[NSURL alloc] initWithString:@"https://buy.itunes.apple.com/verifyXXX"] autorelease];
#endif
这里在写的时候是不建议像这种写法的
if (DEBUG) {
verifyReceiptURL = [[[NSURL alloc] initWithString:@"https://sandbox.itunes.apple.com/verifyReceipt"] autorelease];
} else {
verifyReceiptURL = [[[NSURL alloc] initWithString:@"https://buy.itunes.apple.com/verifyReceipt"] autorelease];
}
因为这样判断就表示DEBUG一定存在,项目中一些其他的写有前一种方式的代码就总是成立,不会走#else分支了。比如有人写了这样的判断来屏蔽release版本的NSLOG
#ifdef DEBUG
#define NSLog(...) NSLog(__VA_ARGS__)
#define debugMethod() NSLog(@"%s", __func__)
#else
#define NSLog(...)
#define debugMethod()
#endif
这时候就起了冲突。