我正在构建一个包含两个目标(免费和付费)的iOS应用程序,因为它们都具有相同的代码但几乎没有变化,例如iAd ...等等
在代码中,我使用以下代码区分这些目标:
IsFree = [[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleDisplayName"] isEqualToString:@"Game.Free"];
但我担心如果infoDictionary文件容易受到黑客攻击(越狱或其他什么)。
请告诉我是否有更好的方法来区分目标。
谢谢。
答案 0 :(得分:3)
更标准的方法是使用编译器指令。
在两个目标的构建设置中,编辑"其他C标志"设置。对于" Lite"版本目标,添加如下内容:
-DLITE_VERSION
对于付费版本目标,请添加以下内容:
-DPAID_VERSION
然后当你拥有特定于" lite"的代码时您可以做的版本:
#ifdef LITE_VERSION
// Lite version specific code here
#endif
对于特定于付费版本的任何代码,您可以执行以下操作:
#ifdef PAID_VERSION
// Paid version specific code here
#endif