2009-07-10 33 views
5

有關最佳做法的問題。iPhone構建配置啓用功能

有沒有辦法以編程方式檢測應用程序是否正在爲AdHoc配置編譯,如果是,在應用程序中啓用功能?

例如,我正在考慮根據應用程序是AdHoc還是Release版本配置,在beta和prod環境之間進行切換。

這樣我們可以讓測試人員在同一應用程序中的服務器環境之間切換。

可以用#define做到這一點,但認爲我會問是否有更優雅的方式來檢測當前配置。

回答

7

您可以在項目或目標信息中使用Preprocessor Macros設置在您的配置中設置自定義定義。這就好像你在源文件中有#define'd變量一樣。

在您的發佈配置中,將GCC_PREPROCESSOR_DEFINITIONS(「預處理器宏」)設置爲MYAPP_RELEASE=1。然後,您可以使用此代碼在編譯時改變功能:

#ifdef MYAPP_RELEASE 
    NSString *title = @"Release Version"; 
#else 
    NSString *title = @"Beta Version"; 
#endif 
+0

這對使用與完整版本相同的項目編譯Lite應用程序目標時啓用/禁用功能也很有用。 – 2009-07-10 16:13:35

0

你也可能對配置的不同的plist鍵,然後從該文件的.plist在運行時讀取您的應用程序就像...

CFBundleRef mainBundle; 
CFDictionaryRef bundleInfoDict; 
mainBundle = CFBundleGetMainBundle(); 
bundleInfoDict = CFBundleGetInfoDictionary(mainBundle); 

if (bundleInfoDict != NULL) { 
    // check for your custom config key here 
} 
+0

這也適用,但通常你沒有爲AdHoc vs. Release配置設置不同的Info.plist文件。我不認爲這裏有任何其他設置需要更改。你也可能發現使用bundle/plist的Cocoa接口更容易使用:`NSString * myKey = [[[NSBundle mainBundle] infoDictionary] objectForKey:@「myInfoPlistKeyName」]; – pix0r 2009-07-10 14:42:09