最佳做法:创build免费和付费版本时如何处理iOS应用程序的代码差异?

我想在AppStore上发布我的iOS App的两个版本。

一个是有偿的,另外一个是免费的。 截至目前,我的代码已完成付费应用程序。 现在我想添加更多的代码为iAd和InAppPurchase的免费应用程序。

维护这两个版本的最佳方法是什么? 我正在考虑复制Xcode项目或在我的git仓库中创build一个分支。

如果你分支或复制项目,你会为自己创造一个维护噩梦。

在同一个项目中创build一个单独的目标,具体的差异可以通过代码中的#ifdef块来处理。 为每个目标添加定义,以指定您是在构build付费还是免费版本。

==添加==

要定义每个目标符号,请为目标build立设置,向下滚动直到findApple LLVM 5.1 – 预处理块,更改目标特定设置以添加所需的符号(例如FREE_BUILD = 1或PAID_BUILD = 1)

要添加特定于目标的代码,您可以在代码中使用该定义的符号:

// some code here #if FREE_BUILD // Some code that only gets compiled for the free target here #elif PAID_BUILD // Some code that only gets compiled for the paid target here #else // Just in case because I'm a paranoid sob #error Must define FREE_BUILD or PAID_BUILD #endif