Ami*_*neG 2 iphone xcode constants objective-c c-preprocessor
我想在我的项目中有一个常量来改变Lite和Pro版本.我不认为这是最好的方式,但我想:
在我的app委托中添加一个常量
#define BUILD_PRO 1 //0 => LITE, 1 => PRO
Run Code Online (Sandbox Code Playgroud)当我需要它时,我导入appDelegate并测试它:
#import "myAppDelegate.h"
Run Code Online (Sandbox Code Playgroud)
然后
#if (BUILD_PRO==1)
NSLog(@"this is pro version");
#endif
Run Code Online (Sandbox Code Playgroud)问题是此代码在某些文件中有效,在其他文件中无效.我没有找到任何解释这种行为; 有人有解释吗?
从同一个项目中获得两个版本(pro和lite)的正确方法是什么?
是的.预处理器定义是实现它的方法.
我想它是在一些文件而不是其他文件中工作,因为有些文件可能不包含你的myAppDelegate.h文件,因此没有得到定义.我建议定义"Lite版本"和"专业版"目标,并在每个目标的构建配置中设置预处理器变量.
一旦你创建了一个精简版目标(只需在你的"专业版"目标上选择重复的目标上下文菜单项来创建精简版):
这样您就不必更改任何头文件,只需要构建精简或完整目标.如果您需要在产品的任何位置添加专业版功能,请使用:
#ifdef BUILD_PRO
// do some pro stuff
#endif
Run Code Online (Sandbox Code Playgroud)