我们有一套共享一组通用屏幕的应用程序。某些屏幕在某些应用中比其他屏幕使用更多的功能。例如,在一个应用程序中,我们的问题屏幕支持标签,但在其他应用程序中则不支持。一方面,我们的区域屏幕支持工作流程,但其他方面则不支持。我可以在编译时检测项目中的文件吗?
我们正在使用的核心数据,以及不同的应用有不同的数据模型;如果实体未被应用程序的数据模型使用,则相应的类不会构建到该应用程序中。
这样做的结果是,一些我们的控制器的包含于可当控制器以特定的应用程序使用或可以不存在的类的引用。目前,我们在应用程序的PCH文件中使用“magic”#defines来解决此问题;因此我们的问题控制器中的一些代码被包装在#ifdef SGB_ISSUES_HAVE_TAGS
中,并且我们的区域控制器中的一些代码被包装在#ifdef SGB_REGIONS_ARE_FILTERED_BY_WORKFLOW
中。
我想什么是代替检测文件是否已被列入该项目做到这一点。因此,在我们的问题控制器顶部我有这样的事情:
#if exists_in_project("SGBIssueTag.h")
#import "SGBIssueTag.h"
#endif
,然后我可以把#ifdef SGB_ISSUES_HAVE_TAGS
到SGBIssueTag.h;我们构建的使用问题控制器的任何应用程序只要包含IssueTag实体就会获得问题标记功能,并且我们不必乱用PCH文件。
是这样的可能吗?
谢谢。这就是我现在所做的 - “我们在应用程序的PCH文件中使用”魔术“#defines解决了这个问题 - 我想知道是否可以根据Xcode项目的一部分自动完成比。 – Simon