enum 値に任意の名称やその他の情報を保持する方法について

仕事で行うプログラミングと自分の趣味などで行うプログラミングの間のギャップに悩む @masa711115 です。

皆さんはシステム/プログラム内で使用する定数値についてどのような管理方法を取られているでしょうか。 一般的には const や enum で管理されていると思います。 今回はこの中で enum について書いてみたいと思います。 ※ソースの内容はすべて C# です。 ※また、Unit Test の記述は Visual Studio の単体テスト機能を使用しています。

続きを読む

SDK バージョンとランタイムバージョンの判別方法について

最近思うようにアプリ開発が進まず、少々焦っている @masa711115 です。

今回はこのブログで初めての技術ネタを書いてみようと思います。
※以前のブログではごくまれに書いていましたが…

iOS アプリに限らず、アプリケーションの開発を行う際に SDK やランタイムのバージョンによって処理をわけたいことがあると思います。特に新しいバージョンの OS の新機能を使う場合や廃止予定の機能がある場合に現在のバージョンと新しいバージョンで互換性を保持しなければならない場合などです。
例えば、iOS 5.0 以上とそれ以外で実装を切り替えたい場合は以下のようになります。

#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 50000
// iOS 5.0 以上で実装する処理
#else
// iOS 5.0 未満で実装する処理
#endif

ところが、これではコンパイル時に内容が決定してしまうため不便な場合が出てきます。
その場合は以下の様にすることで実行されるデバイスの OS バージョンに応じて処理内容を変更することが可能となります。

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 5.0) {
// iOS 5.0 以上で実装する処理
} else {
// iOS 5.0 未満で実装する処理
}

これ以外にもクラスをチェックする方法やフレームワークのバージョンで判定する方法もあります。
ネット上にたくさん情報がありますので、探してみてください!