2011-02-01 137 views
1

我有一個名爲myConstants.h的文件,用於放置應用程序使用的所有常量。該文件被導入到任何需要訪問其中一個變量的類中。iPhone - 在沒有方法的情況下定義條件變量

我正在構建一個通用應用程序,並且我有變量,如果它們在iPad或iPhone上運行,我需要具有不同的值。

我給你一個通用的例子,我的意思是。

在我主要的代碼,我可能有類似:

self.DEVICE = @"iphone"; 
self.IPAD = NO; 

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { 
    self.DEVICE = @"ipad"; 
    self.IPAD = YES; 
} 

但是,這是定義主代碼。如果我需要一個類來使用這兩個變量中的一個,我需要構造複雜的方法來引用主類並在那裏讀取變量。

我的想法是將其包含在myConstants.h中。

但我怎麼能這樣做,如果myConstants.h只是一個普通的文件,其中每一行是一個#define條目沒有任何方法?

我的想法是將DEVICEIPAD變量作爲整個應用程序的全局變量,並使它們可用於任何類,只需#import "myConstants.h"

這可能嗎?怎麼樣?

感謝

回答

1

我不認爲#define塊將在這種情況下工作,因爲這些是在編譯時解釋。您的編譯器將如何知道用戶正在使用哪個設備?

我在我的一個應用程序中使用UIDevice extension在運行時檢測設備類型(在if語句中)。這工作正常。

1

您可以使用預編譯的:

#if TARGET_OS_IPHONE 
NSString *device_ = @"iphone"; 
#endif TARGET_OS_IPHONE 

然後在構建屬性定義指令。

+0

不幸的是,這對編譯時非常有用,而不是我所需要的運行時間。不管怎麼說,還是要謝謝你。 – SpaceDog 2011-02-01 21:50:09

+0

對,我正在爲每個設備「MyApp」和「MyApp HD for iPad」設計一個單獨的二進制文件。 – MarkPowell 2011-02-01 21:57:26

相關問題