2012-04-04 15 views
0

IphoneかIpadアプリケーションで実行されるかによって変数を定義したいと思います。だから私はこのコード変数を定義する方法はXCodeの条件に依存します

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

を書いしかし、iPhoneとiPadの両方でそれが123

+0

多分あなたは定義することはできませんが、別の方法はNSStringまたはintまたは他の変数とsetvalues initを使用することです。 –

+0

@cat下記の@schの回答をご覧ください。 #defineが何のために使われているのかを学び理解する必要があります。 –

答えて

2

はこれを試してみてください:

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

これはあなたのために正常に動作する必要があります。

+0

これはうまくいくかもしれませんが、その必要はありません。 #defineがどのように使われているのか、それが何のためにあるのかを知ることはずっと良いことです。 –

3

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

ABCはライン#define ABC @"122"に続くすべての行における@"122"と、ライン#define ABC @"123"に従うすべての行において@"123"で置換されています。

この手順は、実行時ではなくビルド時に実行されます。ですから、文字列としてABCを定義し、次のようにその値を設定する必要があります。

NSString *ABC; 
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { 
    ABC = @"122"; 
    NSLog(@"Ipad"); 
} else { 
    ABC = @"123"; 
    NSLog(@"iphone "); 
} 
NSLog(@"%@", ABC); 
+0

しかし、私はいくつかの静的変数をpchファイルに設定したいのですが、どうすればいいですか? – cat

関連する問題