0

我想定义一些变量取决于它是在 Iphone 还是 Ipad 应用程序上运行。所以我写了这段代码

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
    #define ABC @"122"
    NSLog(@"Ipad");
} else {
    #define ABC @"123"
    NSLog(@"iphone ");
}
NSLog(@" %@", ABC);

但在 iphone 和 Ipad 中都显示 123。

4

2 回答 2

3

#defineABC告诉预处理器通过与之关联的值来修改源代码中的每个出现。

ABC将被替换为@"122"在该行之后的所有行中#define ABC @"122"以及@"123"在该行之后的所有行中#define ABC @"123"

此步骤发生在构建时而不是运行时。所以你应该定义ABC为一个字符串并设置它的值如下:

NSString *ABC;
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
    ABC = @"122";
    NSLog(@"Ipad");
} else {
    ABC = @"123";
    NSLog(@"iphone ");
}
NSLog(@"%@", ABC);
于 2012-04-04T10:47:01.347 回答
3

试试这个:

#define ABC (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad ? @"122" : @"123")

这应该适合你。

于 2012-04-04T11:12:52.380 回答