我希望我的项目中有一个常量可以在 Lite 和 Pro 版本之间切换。我不认为这是最好的方法,但我正在尝试:
在我的应用程序委托(delegate)中添加一个常量
#define BUILD_PRO 1 //0 => LITE, 1 => PRO
当我需要它时,我导入 appDelegate 并测试它:
#import "myAppDelegate.h"
然后稍后
#if (BUILD_PRO==1) NSLog(@"this is pro version"); #endif
问题是此代码在某些文件中有效,但在其他文件中无效。我还没有找到这种行为的任何解释;有人能解释一下吗?
从同一项目获得两个版本(专业版和精简版)的正确方法是什么?
最佳答案
是的。预处理器定义就是实现这一点的方法。
我想它在某些文件中起作用,而在其他文件中不起作用,因为有些文件可能不包含您的 myAppDelegate.h 文件,因此无法获取定义。我建议定义“Lite Version”和“Pro Version”目标,并在每个目标的构建配置中设置预处理器变量。
创建精简版目标后(只需选择“专业版”目标上的重复目标上下文菜单项即可创建精简版目标):
- 进入项目/编辑目标“专业版本”菜单项
- 转到“构建”选项卡并找到“预处理”部分(朝向底部)。
- 将 BUILD_PRO=1 添加到“预处理宏”部分。
这样您就不必更改任何头文件,您只需要构建精简版或完整目标。如果您需要在产品中的任何位置添加专业功能,只需使用:
#ifdef BUILD_PRO
// do some pro stuff
#endif
关于objective-c - iPhone项目常数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2052943/