#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 。我猜这是因为操作的顺序而发生的。任何人都能给我一个很好的解释吗?
(我不是在寻找解决方案或替代方法来做上述事情。只是解释为什么会发生这种情况)
答案 0 :(得分:2)
此
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)
我建议使用第二种解决方案。
答案 1 :(得分:1)
像你一样的宏只是在编译时被替换。编译代码后,代码就是:
- (void)viewDidLoad
{
[super viewDidLoad];
NSLog(@"hight: %d",(([[UIScreen mainScreen] bounds].size.height-568)?NO:YES) ? 568 : 480);
NSLog(@"hight: %d",(([[UIScreen mainScreen] bounds].size.height-568)?NO:YES) ? 568 : 480+99);
}