我們有一套共享一組通用屏幕的應用程序。某些屏幕在某些應用中比其他屏幕使用更多的功能。例如,在一個應用程序中,我們的問題屏幕支持標籤,但在其他應用程序中則不支持。一方面,我們的區域屏幕支持工作流程,但其他方面則不支持。我可以在編譯時檢測項目中的文件嗎?
我們正在使用的核心數據,以及不同的應用有不同的數據模型;如果實體未被應用程序的數據模型使用,則相應的類不會構建到該應用程序中。
這樣做的結果是,一些我們的控制器的包含於可當控制器以特定的應用程序使用或可以不存在的類的引用。目前,我們在應用程序的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