Cocoa Framework版本号有哪些限制?

时间:2010-04-30 11:01:29

标签: cocoa macos frameworks versioning

我们正在分发一个定期更新的Cocoa框架。我们将在每个版本中更新版本号。 Apple文档似乎表明版本号应该是连续递增的整数。我们以多种格式分发输出,框架只是其中之一。我们宁愿不必为我们的框架维护一个单独的编号系统。

我们并不关心框架版本号的精确格式,只要它们在产品发生变化时发生变化,并以正确,明智和预期的方式运行。我正在寻找一种避免运行单独的版本号计数器的方法。

一个建议是,对于产品版本12.34.56,我们可以简单地删除这些点,并说框架版本是123456(具有适当的零填充)。

  • 是否可以表示的数字类型有限制(uint?long?)
  • 它必须是一个数字吗?它可能是一个字符串吗?
  • 这些数字是否必须连续?
  • 在这种情况下是否有标准的做事方式?

1 个答案:

答案 0 :(得分:4)

据我所知,这个要求的原因是你可以进行如下宏观检查:

#if FRAMEWORKNAME_VERSION >= 123456
    // some stuff
#else
    // some other stuff
#endif

这些数字不需要是连续的,你建议的方案是非常明智的:

#define MAKE_VERSION(MAJOR,MINOR,PATCH) ((MAJOR*10000)+(MINOR*100)+PATCH)

我还建议除了定义版本之外,还要为每个版本定义常量......

#define FRAMEWORKNAME_VERSION_1_0_0 MAKE_VERSION(1,0,0)
#define FRAMEWORKNAME_VERSION_1_0_1 MAKE_VERSION(1,0,1)

这样,你可以多种方式检查......:

#if FRAMEWORKNAME_VERSION >= MAKE_VERSION(1,0,1)
    // 1.0.1 and later
#else
    // Before 1.0.1
#endif

或者:

#if defined(FRAMEWORKNAME_VERSION_1_0_1)
    // 1.0.1 and later
#else
    // Before 1.0.1
#endif

您应满足的关键要求是:

       
  • 数字单调增加
  •    
  • 数字是可预测的
  •    
  • 数字很容易比较

除了整数表示之外,如果要提供版本的字符串表示,请务必继续;但是,我强烈建议您使用整数表示,因为它简化了比较并允许在预处理器中检查版本。