代码之家  ›  专栏  ›  技术社区  ›  Joe

cocoa框架版本号有哪些限制?

  •  2
  • Joe  · 技术社区  · 14 年前

    我们正在分发一个带有定期更新的cocoa框架。我们将在每个版本中更新版本号。苹果文档似乎建议版本号应该是连续递增的整数。我们以多种格式分发输出,而框架只是其中之一。我们不希望仅仅为我们的框架维护一个单独的编号系统。

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

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

    • 对可以表示的数字类型是否有约束(uint)?长?)
    • 一定是数字吗?可能是一根绳子吗?
    • 数字必须是连续的吗?
    • 在这种情况下有标准的做事方式吗?
    1 回复  |  直到 14 年前
        1
  •  4
  •   Michael Aaron Safyan    14 年前

    据我所知,此要求的原因是,您可以进行如下宏检查:

    #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
    

    您应该满足的关键要求是:

    • 数字是单调递增的。
    • 数字是可以预测的
    • 这些数字很容易比较

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