podspec不允许这样做,因为这样做会使其他podspecs几乎不可能定义它们依赖的包和/或其他包可能因为意外的API差异而损坏。
例如,考虑两个依赖AFNetworking的Pod,但其中一个指定了外部源位置(Pod A),而另一个只指定了最低版本要求(Pod B):
-
吊舱A:
s.dependency 'AFNetworking', :git => 'https://arbitrary/location'
-
吊舱B:
s.dependency 'AFNetworking', '> 2'
现在有几个潜在的问题:
-
目前,我们不知道Pod A回购中的版本是什么,直到我们下载它,如果无法满足对AFNetworking(例如Pod B)的各种常见依赖性,这将浪费大量时间。
-
但更糟糕的是,如果Pod A
做
与其他pods(例如Pod B)的依赖版本要求相匹配,但AFNetworking代码实际上来自分叉的源位置,它改变了Pod B所依赖的一些基本API。这将默默地打破CocoaPods试图做出的承诺。
我希望这能清楚地说明为什么我们不能为podspec引入一种方式来默默地打破版本承诺。然而,从您的播客文件中
是
允许覆盖任何pods源位置,因为最终用户(应用程序开发人员)是控制者,不应该有
想不到的
破损