iOS 开发中经常看到 CFBundleShortVersionString 和 CFBundleVersion 两个都可以用来标识应 用版本号的变量, 究竟应该用哪个呢? 下面就一探究竟。

CFBundleShortVersionString

CFBundleShortVersionString (String - iOS, OS X) 表示 bundle 发布版本号, 标识应 用的一个发布迭代。 发布版本号是由三个用句点 . 分割的整数组成的字符串, 第一个数字是主版本 号,表示重要的功能或重大的更新, 第二个数字表示次要功能的更新,第三个数字表示维护更新, 具体规则也可以参考语义化版本

这个值与表示应用构建迭代(包括发布与未发布)的 CFBundleVersion 的值不同, 并且这个值可以 被包含在 InfoPlist.strings 文件中进行本地化。

查看 CFBundleShortVersionString 的苹果开发者文档。

CFBundleVersion

CFBundleVersion (String - iOS, OS X) 表示 bundle 构建迭代的版本号(发布与未发布), 命名规则与 CFBundleShortVersionString 相同, 并且只能包含数字 (0-9) 和 句点 (.) , 整数开头部分的 0 会被忽略,比如: 1.02.31.2.3 相同。 这个值不能被本地化。

查看 CFBundleVersion 的苹果开发者文档。

这两个值的对比如下:

Key Xcode name Summary
CFBundleShortVersionString Bundle versions string, short (Localizable) The release-version-number string for the bundle
CFBundleVersion Bundle version (Recommended) The build-version-number string for the bundle

简单来说, CFBundleShortVersionString 标识 bundle 的版本号字符串, 并且可以被本地化, 而 CFBundleVersion 表示构建版本号, 因此推荐使用 CFBundleVersion 作为应用程序的版本号标识。