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

#defineプリプロセッサにABC、ソース コード内の のすべての出現をそれに関連付けられた値で変更するように指示します。

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 に答える