2011年1月
« 12月   3月 »
 12
3456789
10111213141516
17181920212223
24252627282930
31  
2011/01/12

iOSアプリの互換性を確保する その1

新しいバージョンのiOSが出て、アプリをアップデートする時に頭を悩ませるのが互換性の問題だと思います。

古いiOSでもインストール&実行できるようにビルドするには、プロジェクトファイルを開いて左側のペインの一番上に表示されているXCodeのアイコンが付いたプロジェクト名の部分をダブルクリックして、プロジェクトの情報パネルを表示し、「ビルド」タブで表示される設定の「Deployment」のグループの「iPhone OS Deployment Target」欄を使います。

ここでサポートしたい一番古いiOSのバージョンを指定すれば、ビルドの設定としては完了です。(XCode 3.2.5で指定できるバージョンからはiOS 2.x系は無くなって、iOS 3.0が一番古いバージョンになりました。)

プログラムレベルでは、ざっくりと分けて以下の3つの対応が考えられますが、それぞれの対応をまとめてみたいと思います。

1)新しく追加されたクラスを使う。
2)新しく追加されたメソッドを使う。
3)deprecatedとなったメソッドやプロパティの対応

1)新しく追加されたクラスを使う。

NSClassFromString関数でクラスの有無をチェックすることで、最新のiOSでは追加されたクラスを使った機能を実装し、古いiOSではその部分を実行しないというような対応ができます。

以下のコードでクラスの有無が確認できます。

Class controller = NSClassFromString(@”クラス名”);

新しく追加になったフレームワーク内のクラスを使う場合は、フレームワークを「Weak」リンクに設定しておく必要があります。(通常の「Required」設定の場合は、旧iOSではフレームワークが存在しないため実行できません。)

詳しくは以前投稿した「iPhone OS 2.2.1でも動く3.0アプリ その3」にまとめています。

次回は「2)新しく追加されたメソッドを使う。」です。


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

Comments are closed.