swift - CocoaPods 和迦太基

标签 swift cocoapods carthage

我有一个同时使用 Carthage 和 Cocoapods 的项目。它们都有一个共同的依赖项(准确地说是 PureLayout)。奇怪,但项目编译正常,没有任何关于类重新声明等的错误。 所以问题是:为什么它有效以及当我调用 PureLayout 的方法时实际使用了哪个版本的依赖项——Carthage 的还是 Cocoapods 的?

最佳答案

CarthageCocoaPods 在构建依赖项并将它们集成到项目中方面有很大不同。

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/

相关文章:

ios - 解包 Optional 值时意外发现 nil

ios - CocoaPods、Swift 3 和 Xcode 8 的 ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES 是什么

ios - 在 Objective-C 项目中导入 Swift 框架 - 错误 - 未知类型名称

carthage - 为什么迦太基不支持iOS 7?

ios - queryStarting(atValue 未按预期工作?

json - swiftyJSON 移入数组

swift - 避免在受约束的字符集中出现双周期崩溃

ios - CocoaPods UIImageView+AFNetworking.h 无法识别的选择器 setImageWithURLRequest

swift - Facebook SDK 无法正常工作 swift 3

ios - 调试时 Xcode 崩溃