2009年8月
« 7月   9月 »
 12
3456789
10111213141516
17181920212223
24252627282930
31  
2009/08/06

iPhone OS 2.2.1でも動く3.0アプリ その3

iPhone OS 2.2.1でも動く3.0アプリ その1」、「iPhone OS 2.2.1でも動く3.0アプリ その2」と書いてきて、今回が最終回の「2)iPhone OS 3.0で新しく追加されたクラス(フレームワーク)を使いたい。」場合のやり方です。
ポイントはフレームワークのウィークリンクです。
例えば、iPod Libraryを使う機能を利用する場合、MediaPlayerフレームワークを追加する必要がありますが、通常追加した場合はRequired(必須)フレームワークと追加され、iPhone OS 2.2.1では動かないアプリになってしまいます。
そこでまずはWeakに設定を変更する必要があります。
プロジェクトのターゲット項目の「バイナリをライブラリにリンク」欄を選びます。
Framework Weak 1
次にiPhone OS 3.0上で実行された時にのみ使用するフレームワークを「Weak」に設定変更します。
Framework Weak 2
これで準備はOKです。
あとは、使いたいクラスがあるかを実行時に判定して、iPhone OS 2.2.1で実行されているか、iPhone OS 3.0上で実行されているかを判断します。
例えば、MPMediaPickerControllerを使いたい場合は、以下のようなコードで判定します。
Class controller = NSClassFromString(@”MPMediaPickerController”);
controllerがnilならiPhone OS 2.2.1、nilで無ければiPhone OS 3.0で実行されていることになります。
あとはそれぞれのOS向けの機能を実行するようにプログラムを組むだけですが、UITableViewCellなど、iPhone OS 3.0でDeprecatedになったメソッドがあるクラスもあるので、iPhone OS 2.2.1と3.0で処理を変えるクラスは、Factoryパターン()で作っておくと、将来的にメンテナンスしやすいかも知れません。
ビルドに関する部分(プロジェクト設定など)は、「iPhone OS 2.2.1でも動く3.0アプリ その2」と同じです。
今後もiPhone OSはバージョンアップされてくのは確実で、下位互換が無いようなバージョンアップもあると思うので、以上の方法は覚えておいて損は無いと思います。

※FactoryパターンはGoFデザインパターンのひとつです。

※iPhoneアプリ開発に関する投稿を今から始めるiPhoneアプリ開発にまとめました。

Comments are closed.