2009年7月
« 6月   8月 »
 12345
6789101112
13141516171819
20212223242526
2728293031  
2009/07/29

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

iPhone OS 2.2.1でも動く3.0アプリ その1」で書いた「1)iPhone OS 2.2.1で存在していたクラスで、iPhone OS 3.0で追加されたメソッドを使いたい。」場合のやり方です。
Objective-Cはルートクラスが存在する言語で、全てのクラスは基本的にNSObjectを継承しています。
そのNSObjectに特定のメソッド(メッセージ)を処理できるかをチェックする為のメソッドがあります。
+ (IMP)instanceMethodForSelector:(SEL)aSelector
- (BOOL)respondsToSelector:(SEL)aSelector
具体的には、使用したいメソッドのあるクラスのインスタンス(instance)に対して、以下のように呼び出して、戻り値をチェックすれば、使用したいメソッドが実装されているかが分かります。
BOOL result = [instance respondsToSelector:@selector(メソッド名)];
iPhone OS 2.2.1以前から存在するクラスで、iPhone OS 3.0で追加されたメソッドを使いたい場合は、上記のように呼び出して、trueが返ってきたら3.0で実行されていて、falseが返ってきたら2.2.1で実行されているという事が分かります。
あとはビルドして実機に転送する為にプロジェクト設定を変更する必要があります。
iPhone OS 3.0向けの機能を使う以上、ビルドのターゲット(アクティブSDK)は、iPhone Device 3.0(iPhone Simulator 3.0)で行う必要があります。
通常はビルドターゲットと実行のターゲット(Deployment Target)が同じなので、このままだとiPhone OS 3.0以降の端末でしか実行できないはずですが、プロジェクトファイルの設定の「Deployment」のグループの「iPhone OS Deployment Target」欄で、「iPhone OS 2.2.1」を設定すれば、iPhone OS 2.2.1でも実行できるようになります。(「アーキテクチャ」グループの「ベースSDK」欄は「iPhone Device 3.0」のままです。)
DeploymentTarget.png
次回は「2)iPhone OS 3.0で新しく追加されたクラス(フレームワーク)を使いたい。」場合です。


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

Comments are closed.