Непонятно об использовании неопределенных констант перечисления SDK во время выполнения

Лучше всего начать с примера: в OS X следующие константы перечисления определены в Foundation/NSString.h:

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

Вопросы:

  • Во время компиляции компилятор просто заменяет NSRegularExpressionSearch своим постоянным значением (1024)?
  • Или же постоянное значение найдено во время выполнения, и если да, то какое значение является постоянной при работе на pre 10.7?
  • Целесообразно ли проверять во время выполнения, в какой среде работает программа, перед использованием константы enum?
  • Всегда ли безопасно поставить NSRegularExpressionSearch в моем коде, даже если он будет работать до 10.7? (Под безопасностью я подразумеваю, что наличие одной только константы не вызовет сбоя или исключения; очевидно, я должен учитывать поведение программы, когда использую значение константы, которое более старый API не распознает.)

0 ответов

Другие вопросы по тегам