我的项目有一个目标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

10-06 11:45