我有2个Swift模块,我们称它们为模块“ A”和模块“ B”。我需要在这些模块之间共享一些代码,我们将此模块称为“核心”。
这些模块由客户应用程序使用。客户使用模块A,模块B或同时使用模块B和模块B,并且他们始终获得“ Core”的副本。模块“核心”包含一个数据模型,“ A”和“ B”都使用该数据模型,并向客户公开。但是,我希望“ A”和“ B”能够使用内部方法/类/等。而不是向客户公开这些内容(也就是说,我不想将其公开)。例如,我希望“ A”和“ B”能够创建在“ Core”中定义的数据模型的实例,但是我不希望客户能够实例化它们。
简而言之,我希望模块“ A”和“ B”能够访问“ Core”,就像它是同一模块的一部分一样。我正在寻找的等效于C ++中的“朋友类”,但是对于Swift中的模块。
我当然可以将所有内容放入一个大型项目中,然后使用不同的构建目标来创建A + Core,B + Core和A + B + Core模块,但是一旦添加模块,那将导致组合爆炸C,D,E,F等
这似乎是组织代码的一种非常常见的方法,但是我似乎无法在Swift 4中找到一种实现此目的的方法。有没有人在这里找到一种实现此目的的方法或另一种构建其代码库的方法,以便私有代码可以在模块之间共享吗?
答案 0 :(得分:0)
C ++中的朋友类与模块无关。
解决此问题的正常方法是创建模块C,并让A和B在内部使用它。