我有一个同时使用 Carthage 和 Cocoapods 的项目。它们都有一个共同的依赖项(准确地说是 PureLayout)。奇怪,但项目编译正常,没有任何关于类重新声明等的错误。 所以问题是:为什么它有效以及当我调用 PureLayout 的方法时实际使用了哪个版本的依赖项——Carthage 的还是 Cocoapods 的?
最佳答案
Carthage
和 CocoaPods
在构建依赖项并将它们集成到项目中方面有很大不同。
CocoaPods 是集中式依赖管理器,它将构建您的依赖项,并通过创建新的 .xcworkspace
工作区将它们直接集成到项目中。这意味着您可以在构建后立即访问构建依赖项。
另一方面,Carthage 是去中心化的依赖管理器,它让您负责将依赖项集成到您的项目中。 Carthage 构建在 Cartfile
中指定的框架,并将它们移动到 Carthage/Builds
文件夹。在构建过程之后,由您来集成和管理依赖项。
在您的情况下,当您使用 CocoaPods 和 Carthage 构建 PureLayout
依赖项时,CocoaPods 将其集成到项目中,而 Carthage 将构建留在 Carthage/Builds
中,这意味着你只使用了 PureLayout
的 CocoaPods 构建版本。
此外,使用多个包/依赖项管理器也是一种不好的做法。您应该坚持使用并适应它。
关于swift - CocoaPods 和迦太基,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37744365/