2011-04-25 13 views
1

iOS SDKがアップグレードされ、新しい技術が登場します。つまり、ブロックは新しい技術です。iOSターゲットバージョンとSDKバージョンについて

「ブロック」ベースの実装もターゲットの低いバージョンや古いiPhone(3Gま​​たは第一世代)にも配布できるのですか?

これらの問題に対処するにはどうすればよいですか?

答えて

0

この種の問題に対処する通常の方法は、現在のOSバージョンに基づいて実行時に機能を選択的に有効にすることです。しかし、これは管理が非常に複雑になる可能性があります。

:クエリ実行時
  • 使用時現在のOSバージョン
  • を結ぶ弱いが動的に新しいクラスは、例えば

  • 存在している場合にのみ、新しい機能を呼び出すクラス
  • を作成

    • Class optionalClass = NSClassFromString(@"NSArtificialIntelligence"); 
      if (optionalClass) { 
          id optionalObj = [[optionalClass alloc] init]; 
          // ... 
      } 
      

      以下のドキュメントイオンは詳細にプロセスを説明しています。あなたが特異的にブロックに言及

      。この機能は、コンパイラーとObjective-Cランタイムのサポートを必要とするため、古いシステムでは使用できません。

  • +0

    感謝。ブロックは単なる一例に過ぎない。開発者は最新の技術を使いたいと思っていますが、アプリは一番低いSDKのために、さらに多くのデバイスにインストールしたいと考えています。はい、これは矛盾しています。もっと深く知るために、このタイプの問題を扱う良い練習はありますか?再度、感謝します – Forrest

    0

    iOS4以降のブロックを使用している場合は、libSystem.B.dylibへのリンクを弱くする必要があります。ブロックは最新のiOS SDKでコンパイルできますが、iOS2,3.0と3.1ではブロックランタイムがありません。

    (また、あなたがiPhone 2.2以降のためのブロックを使用することができます。plblocksをご覧ください。)あなたの答えのための