在纯 swift 中使用框架时,我们会出现“重复符号”错误吗?

Can we have “duplicate symbols” error when using frameworks in pure swift?

几年前,使用 ObjC 和框架(以及框架内的框架)时常会出现“重复符号”错误。例如,如果您创建了一个包含 RestKit 的框架,然后想要使用该框架的应用程序也在使用 RestKit,那么您就会遇到该错误。修复它的一种方法是使用前缀将包含的源代码重命名到您的框架中。或者只是避免在您的框架上使用 3rd 方依赖项。注意我们以前使用的是静态库,而不是动态库。

今天纯swiftapps/frameworks和动态库有没有可能出现同样的问题?据我了解,swift 使用命名空间模块的概念,这是我们在 ObjC 中没有的。

我的意思是,是否可以创建一个使用 Alamofire(假设版本 5)的框架,然后创建一个使用 Alamofire(假设版本 5.0.1)的应用程序以及您的框架也使用 Alamofire?

我正在使用类似的设置,并且在我的项目中没有遇到任何此类重复符号。

让我分享一下我的经验。

我的项目设置如下所示。

Main Project -> uses PromiseKit via Cocoapods
My Framework -> uses PromiseKit via Cocoapods
Main Project uses My Framework

我在 运行 此设置时没有遇到任何此类问题。 IMO,希望 Swift 编译器会注意它。