I used CocoaPods for some of my projects. It\'s cool and easy to keep updated with my dependencies/open source frameworks.
But I have some doubts regarding the inner
CocoaPods is a centralised dependency management. It operates by Podfile to read a dependency and a version. Pod project will be created in a workspace. CocoaPods implements Implicitly dependency[About] approach:
Source codeClosed code[Example]On the client side you have a Podfile. The core of Podfile is a pod:
When Podfile is read (during pod install or pod update) by Cocoapods the graph of implicit and explicit dependencies is created. After that the manager should find each source into a .podspec which is usually hosted into some host. That is why Cocoapods is centralised. A framework's developer is responsible for creating this file and supporting it. .podspec describes a meta-information about the framework, like dependencies, subspecs, etc. The main part of it is source which tells to Cocoapods where source is hosted and this sources will be downloaded into a Pod project. Cocoapods uses workspace to automate the build process and manage implicit dependencies. Cocoapods setup all necessary info into your consumer project(like Search pats, etc). When you build the consumer project Xcode pull pods and assemble all together.
[Local podspec]
[CocoaPods version]
[CocoaPods vs Carthage]