XCode中的弱链接类

时间:2014-10-09 13:49:41

标签: ios xcode weak-linking

我的项目有一个目标c类MockupModel,它为iOS XCode项目提供模型信息,以帮助为App商店创建屏幕截图。

该项目有两个目标。模型目标包括MockupModel.m

我希望主要目标(针对实际应用)包括MockupModel.m,以便不会意外地将其链接到发货应用。

但是,当我使用文件的属性检查器从项目中排除MockupModel.m时,合理地说,项目无法链接。我收到错误抱怨MockupModel的功能缺失。

是否有某种方法可以将MockupModel声明为可选项,以便链接器不会担心它是否未实现?在运行时,我的代码会检查NSClassFromString(@"MockupModel")[MockupModel class]是否可用。

感谢。

1 个答案:

答案 0 :(得分:1)

在非主目标中,添加用户定义的预处理程序指令。你可以称之为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