例から始めるのが最善かもしれません: OS X では、次の列挙型定数が Foundation/NSString.h で定義されています。
NSCaseInsensitiveSearch = 1,
NSLiteralSearch = 2,
NSRegularExpressionSearch NS_ENUM_AVAILABLE(10_7, 3_2) = 1024
質問:
- コンパイル時に、コンパイラは単に NSRegularExpressionSearch をその定数値 (1024) に置き換えますか?
- または、実行時に見つかった定数値はありますか? もしそうなら、10.7 より前で実行したときの定数値は何ですか?
- enum定数を使用する前に、実行時にプログラムが実行されている環境を条件付きで確認することをお勧めしますか?
NSRegularExpressionSearch
10.7 より前のランタイムで実行される場合でも、コードを挿入しても常に安全ですか? (安全とは、定数だけが存在してもクラッシュや例外が発生しないことを意味します。明らかに、古い API が認識しない定数値を使用する場合、プログラムの動作を考慮する必要があります。)