0

在我的应用程序中,我为下一个版本实现的某些部分工作,

所以我们需要阻止这个版本的一些实现。

我们的上级要求我使用pre 宏处理器,有#ifDef,endif 这样的,您需要在 buildsettings 中将版本号定义为预处理器宏

App_Version在构建设置中添加了一个用户定义的设置“”,

在此处输入图像描述

“我如何使用它

#ifDef AppVersion 1.0
NSLOG (current version implementation)
else
NSLOG (NEXT version implementation)

其实我对它不太了解,所以我的解释很差

4

2 回答 2

1
#if App_Version == 1.0

我不记得在 XCode 中是如何定义新的预处理器宏的,但我认为您没有正确定义它。请参阅如何在 Xcode 4 中定义预处理器宏?

但是,远不推荐使用预处理器宏来处理此类事情。

你应该

  1. 创建一个从包中读取应用程序版本的方法
  2. 调用方法检查版本和使用标准if-elseif-else

随着 iPhone 的开发,我真的无法想象你为什么要使用这样的宏/方法。您要构建多少个版本的应用程序?我为 iOS 实现的所有应用程序只需要 1 个版本 - 最新版本。我看不出您有任何理由要从当前代码构建较旧的应用程序版本。

使用版本控制系统,如果您正在将下一个版本的功能实现到当前代码中,请使用专用分支!否则这只是一团糟,你的主管……不聪明……因为没有看到它。

于 2013-11-07T12:12:53.710 回答
1

编译器不需要(或不想)知道有关应用程序版本的任何信息(它是应用程序提交过程的信息)。这不应该用预处理器宏来完成,除非你想定义你自己的(即使那样,我也不推荐它)。您应该在运行时检查应用程序版本

[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"];

并防止在此基础上在当前版本中访问新功能。更一般地说,我会考虑使用像git flow这样的分支模型来处理这样的事情。当您有 3,4,5 ... 版本要处理时会发生什么。预处理器宏将成为管理的噩梦。

于 2013-11-07T12:19:44.043 回答