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

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

iOSアプリの互換性を確保する その1の続きです。

2)新しく追加されたメソッドを使う。

NSObjectの以下のメソッドを使って、追加されたメソッドの有無を確認する事で、新しいOSでは追加された機能を使って、古いOSでは前のままという事ができます。

- (BOOL)respondsToSelector:(SEL)aSelector

使い方は以下のようになります。

BOOL result = [instance respondsToSelector:@selector(メソッド名)];

instanceの部分はメソッドが追加されたオブジェクトのインスタンス変数です。

あまりいい例では無いかも知れませんが、iOS4.0で追加された、UIApplicationクラスのpresentLocalNotificationNowメソッドを例に挙げると、以下のようになります。

UIApplication *app = [UIApplication sharedApplication];
if( [app respondsToSelector:selector(presentLocalNotificationNow:) )
{
// iOS 4.0以降で実行されていてpresentLocalNotificationNowが使える。
}
else
{
// iOS 4.0以前で実行されていてpresentLocalNotificationNowが存在しない。
}

色々なクラスで挙動を分ける場合は、resultの値をUIApplicationDelegateのプロパティにでも持っておけば、アプリ全体から参照できる為、便利です。

次回は「3)deprecatedとなったメソッドやプロパティの対応」です。


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

Comments are closed.