Непонятно об использовании неопределенных констант перечисления 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 не распознает.)