#define IS_IPHONE5 (([[UIScreen mainScreen] bounds].size.height-568)?NO:YES)
#define HEIGHT IS_IPHONE5 ? 568 : 480
- (void)viewDidLoad
{
[super viewDidLoad];
NSLog(@"HEIGHT: %d",HEIGHT);
NSLog(@"HEIGHT: %d",HEIGHT+99);
}
以上两个日志的结果都是 568。我猜这是因为操作的顺序而发生的。任何人都可以给我一个很好的解释吗?
(我不是在寻找解决方案或替代方法来执行上述操作。只是解释为什么会发生这种情况)
最佳答案
这个
NSLog(@"hight: %d",HIGHT+99);
将扩展为
NSLog(@"hight: %d",IS_IPHONE5 ? 568 : 480+99);
然后
NSLog(@"hight: %d",(([[UIScreen mainScreen] bounds].size.height-568)?NO:YES) ? 568 : 480+99);
所以它将产生 568
解决方案:
NSLog(@"hight: %d",(HIGHT)+99);
或
#define HIGHT (IS_IPHONE5 ? 568 : 480)
我建议使用第二种解决方案。
关于ios - 试图理解宏的操作顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20569941/