os 2.xと3.xのユニバーサルバイナリを作成することは可能です。MFMailComposerのサンプルコードを見ることができますが、iOS4とiOS3およびXCode 3.2.3の作成方法は?
1 に答える
はい、プロセスに関するドキュメントがいくつかありますが、存在しない可能性のあるクラスをインスタンス化する場合は、最初にテストする必要があります。
NSClassFromStringを使用すると、クラスなしで3.xを実行している場合はnullが返され、後のOSで実行しているときにクラスが存在する場合は、新しいインスタンスを割り当てるために使用できるクラスが返されます。このようにして、3.xコードをテストしてフォールバックし、利用可能な場合は4.xクラスと機能を利用できます。
コンパイル時の警告なしにコードに新しいクラスをキャストできるように、ターゲットOSをより低い(3.x)に設定しながら、新しい(4.x)ライブラリに対してコンパイルするようにしてください。
新しいAPIを使用する場合、またはAPIの変更をサポートする場合は、respondsToSelectorを使用してメソッドの存在をテストし、オプションでperformSelectorなどを使用してメソッドを起動できます。
さまざまなケースがありますが、このアイデアは、ターゲットOSの設定と、後のOSでのみ利用可能な機能をフォールバックまたは回避するためのランタイムイベントのテストを中心に展開されます。
たとえば、UILocalNotificationクラスの存在を確認し、使用可能な場合はツールバーにボタンを配置し、存在しない場合は存在しないため、実行時にクラッシュするコードを完全に回避できます。