不清楚在运行时使用未定义的SDK枚举常量

时间:2013-07-02 15:10:19

标签: constants backwards-compatibility compile-time-constant runtime-environment

最好从一个示例开始:在OS X中,以下枚举常量在Foundation / NSString.h中定义:

    NSCaseInsensitiveSearch = 1,
    NSLiteralSearch = 2,
    NSRegularExpressionSearch NS_ENUM_AVAILABLE(10_7, 3_2) = 1024

问题:

  • 在编译时,编译器是否只是将NSRegularExpressionSearch替换为其常量值(1024)?
  • 或者,是在运行时找到的常量值,如果是,那么在10.7之前运行时,常量是什么值?
  • 在使用枚举常量之前,建议在运行时有条件地检查程序运行的环境吗?
  • NSRegularExpressionSearch放在我的代码中是否总是安全的,即使它将在10.7之前的运行时运行? (安全我的意思是单独存在常量不会导致崩溃或异常;显然,当我使用旧API无法识别的常量值时,我必须考虑程序的行为。)

0 个答案:

没有答案