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アプリ開発にまとめました。
posted by Kazuto Kubo at 01:47 | Comment(0) | TrackBack(0) | iPhone/iPod touch
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/31093590
※ブログオーナーが承認したトラックバックのみ表示されます。
※言及リンクのないトラックバックは受信されません。

この記事へのトラックバック