CocoaPods中的"~>"符号有什么用途?

96

我想知道“~>”符号的用途,因为我发现在下面的例子中它们是相同的:

pod 'AFNetworking','~> 2.0.3'

pod 'AFNetworking','2.0.3'

基本上,您需要这样做是为了确保您的应用程序不会因为更高版本(可能不兼容的pod)而崩溃。尽管如此,它仍然可以应用/受益于“次要”更新。 - mfaani
1
如果您在 pod 文件中使用 > 指定版本,例如 pod 'AFNetworking','> 2.0.3',则它将安装新版本的 2.0.x 和最高版本 3.0,而如果您使用 'AFNetworking','2.0.3' 进行指定,则只会安装该版本。 - MiTal Khandhar
4个回答

131

~>(乐观操作符)用于指定版本“最高可到下一个重要 | 次要 | 补丁”。例如:

~> 0.1.2将获得版本最高可达0.2(但不包括0.2及更高版本)

~> 0.1将获得版本最高可达1.0(但不包括1.0及更高版本)

~> 0将获得0及以上版本的版本(与省略相同)

其中0.1.2表示“我想要这个精确版本”

这里有更多信息


我有一个疑问,如果我指定像 '~> 7.6' 这样的版本号,我应该得到从 7.6.0 到 8.0(不包括)之间的所有版本。但是当运行真正的 pod install 时,我得到的是 7.6 版本,即使存在 7.8 版本。你说它也意味着 "我想要这个确切的版本",那么这有什么意义呢?如何获取符合 ~> 规则的最新版本? - Jakub Truhlář
请注意,对于我所指的确切版本,我是指没有使用~>的特定版本。另外,请注意,CocoaPods将根据其他多个因素(如目标SDK、与其他pods的版本兼容性、Swift版本等)解决依赖关系。 - Alladinian
我想到了一件事。自从Cocoapods 1.0以来,在pod install中不会更新源代码库。因此,如果上面的示例中发布了版本7.8,并且在我的最后一次源代码库更新之后,我将得到源代码库所知道的最后一个版本(例如7.6)。 - Jakub Truhlář
1
@JakubTruhlář,这是来自CocoaPods网站的内容:使用pod install在您的项目中安装新的pods。即使您已经有了一个Podfile并且之前运行过pod install;所以即使您只是向已经使用CocoaPods的项目添加/删除pods。仅当您想要将pods更新到较新版本时,请使用pod update [PODNAME]。 - user1105951
请帮我理解... ~> 版本号0.1.2将使您获得高达0.2的版本--我感到困惑,因为0.2似乎比语义版本要求的更低。也就是说,如果您想要版本0.1.2,这在我的理解中将是第12次迭代(0.0.1、0.0.2、0.0.3等),那么为什么要请求版本0.0.2(在我看来是第二次迭代)? - KarmaDeli
@KarmaDeli中的0.2指的是0.2.0,而不是0.0.2 - Alladinian

12
  • ~> 6.0 将会获取到下一个版本是 7.0 之前的最新版本,但不包括版本号为 7.0 的版本。

  • ~> 6.0.0 将会获取到下一个版本是 6.1.0 之前的最新版本,但不包括版本号为 6.1.0 的版本。


6

乐观运算符~>:

'~> 0.1.2' Version 0.1.2 and the versions up to 0.2, not including 0.2 and higher
'~> 0.1' Version 0.1 and the versions up to 1.0, not including 1.0 and higher
'~> 0' Version 0 and higher, this is basically the same as not having it.
For more information, regarding versioning policy, [see][1]:

链接已经失效,尽管当前文档中有一个链接。 - Antek
3
不要给你点赞,你可以更新链接 :) 做一些建设性的工作。 - Adnan Aftab
2
你说得对,虽然不是我在给它点踩! :) 抱歉,我应该这样做的。(我的意思是我应该编辑,而不是点踩 ;) ) - Antek
从0开始并不是很有用,了解如何使用类似于~> 1.0.0~> 1.0~> 1的方式会更加有帮助。 - Jonathan.

6
虽然大多数答案都是正确的,但它们使用示例回答问题,而不是解释正在发生的事情,这使得理解这个概念变得困难。要理解乐观运算符如何工作的关键是,cocoapods会查看版本号的特定程度来确定它如何解释乐观运算符。
版本号的语法传达了开发人员发布更新类型的信息。该syntax从左到右依次表示主要.次要.补丁更新。
Cocoapods会查看版本号中最具体的元素以确定它如何解释乐观运算符。因此,如果版本号包含有关补丁更新的信息-即它看起来像这样:~> 1.1.2-那么cocoapods在实现乐观运算符时将专注于补丁更新。同样,如果版本号只有次要更新那么cocoapods在实现乐观运算符时将只专注于次要或补丁更新。 < p >版本号< code>~> 1.0.1告诉cocoapods安装最近的版本更新,只要那个更新是一个补丁更新;主要或次要更新应该被忽略。

版本号< code>~> 1.1告诉Cocoapods安装最新的可用更新,只要这些更新是补丁或次要更新,它应该忽略任何主要更新。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接