有關最佳做法的問題。iPhone構建配置啓用功能
有沒有辦法以編程方式檢測應用程序是否正在爲AdHoc配置編譯,如果是,在應用程序中啓用功能?
例如,我正在考慮根據應用程序是AdHoc還是Release版本配置,在beta和prod環境之間進行切換。
這樣我們可以讓測試人員在同一應用程序中的服務器環境之間切換。
可以用#define做到這一點,但認爲我會問是否有更優雅的方式來檢測當前配置。
有關最佳做法的問題。iPhone構建配置啓用功能
有沒有辦法以編程方式檢測應用程序是否正在爲AdHoc配置編譯,如果是,在應用程序中啓用功能?
例如,我正在考慮根據應用程序是AdHoc還是Release版本配置,在beta和prod環境之間進行切換。
這樣我們可以讓測試人員在同一應用程序中的服務器環境之間切換。
可以用#define做到這一點,但認爲我會問是否有更優雅的方式來檢測當前配置。
您可以在項目或目標信息中使用Preprocessor Macros
設置在您的配置中設置自定義定義。這就好像你在源文件中有#define
'd變量一樣。
在您的發佈配置中,將GCC_PREPROCESSOR_DEFINITIONS
(「預處理器宏」)設置爲MYAPP_RELEASE=1
。然後,您可以使用此代碼在編譯時改變功能:
#ifdef MYAPP_RELEASE
NSString *title = @"Release Version";
#else
NSString *title = @"Beta Version";
#endif
你也可能對配置的不同的plist鍵,然後從該文件的.plist在運行時讀取您的應用程序就像...
CFBundleRef mainBundle;
CFDictionaryRef bundleInfoDict;
mainBundle = CFBundleGetMainBundle();
bundleInfoDict = CFBundleGetInfoDictionary(mainBundle);
if (bundleInfoDict != NULL) {
// check for your custom config key here
}
這也適用,但通常你沒有爲AdHoc vs. Release配置設置不同的Info.plist文件。我不認爲這裏有任何其他設置需要更改。你也可能發現使用bundle/plist的Cocoa接口更容易使用:`NSString * myKey = [[[NSBundle mainBundle] infoDictionary] objectForKey:@「myInfoPlistKeyName」]; – pix0r 2009-07-10 14:42:09
這對使用與完整版本相同的項目編譯Lite應用程序目標時啓用/禁用功能也很有用。 – 2009-07-10 16:13:35