iPhone构建配置:启用功能

5

关于最佳实践的问题。

有没有一种编程方式可以检测应用程序是否正在为AdHoc配置编译,并在这种情况下启用应用程序中的某个功能?

例如,我考虑根据应用程序是AdHoc还是Release配置来启用测试版和生产环境之间的切换功能。

这样我们就可以给测试人员在同一个应用程序中切换服务器环境的能力。

可以使用 #define 来实现此功能,但想问是否有更优雅的方法来检测当前配置。

2个回答

7

您可以使用项目或目标信息中的预处理器宏设置,在配置中设置自定义定义。这与在源代码中使用#define定义变量一样。

在您的发布配置中,将GCC_PREPROCESSOR_DEFINITIONS("预处理器宏")设置为MYAPP_RELEASE=1。然后,您可以使用此代码在编译时更改功能:

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

这对于在使用与完整版本相同的项目编译为 Lite 应用程序目标时启用/禁用功能也非常有用。 - Brad Larson

0

你也可以为配置设置不同的plist键,然后在运行时让你的应用程序从.plist文件中读取,例如...

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

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

那也可以,但通常你不需要为 AdHoc 和 Release 配置设置不同的 Info.plist 文件。我认为这里没有其他需要更改的设置。你可能还会发现 Cocoa 对 bundle/plist 的接口更容易使用:NSString *myKey = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"myInfoPlistKeyName"]; - pix0r

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接