我的项目有一个目标c类MockupModel
,可为iOS XCode项目提供样机信息,以帮助创建App Store的屏幕截图。
该项目有两个目标。样机目标包括MockupModel.m
。
我希望主要目标(对于实际的应用程序)不包含MockupModel.m
,这样就不可能将其偶然链接到发货的应用程序。
但是,当我使用文件的属性检查器从项目中排除MockupModel.m
时,足够合理地,该项目将无法链接。我收到一个错误消息,抱怨MockupModel
的功能丢失。
有什么方法可以将MockupModel
声明为可选的,以便链接程序不担心它是否得以实现?在运行时,我的代码将检查NSClassFromString(@"MockupModel")
或[MockupModel class]
是否可用。
谢谢。
最佳答案
在非主要目标中,添加用户定义的预处理程序指令。您可以将其称为USE_MOCKUP_MODEL
。从主要目标的文件列表中删除MockupModel.h和MockupModel.m,并将引用MockupModel(或导入)的任何源括起来:
#ifdef USE_MOCKUP_MODEL
//source
#endif
例子:
#ifdef USE_MOCKUP_MODEL
#import "MockupModel.h"
#endif
Model *myModel = nil;
#ifdef USE_MOCKUP_MODEL
myModel = [MockupModel new];
#else
myModel = [RealModel new];
#endif