2011-10-28 8 views
6

ニューススタンドを新しいiOSアプリケーションに統合することを検討しています。これを、iOS 5に移行していないデバイスでも実行できるようにする方法があるかどうかを知りたい。下位互換性を損なうことなくニューススタンドを統合する

誰も私に、これを処理するアプリケーションを設計する方法に関するフィードバックをいただけますか?

ソースファイルのターゲットとセットが異なる単一のアプリケーションを使用することは可能ですが、コードベースを可能な限り統一された状態に保ち、ニューススタンド機能を動的にテストしたいと考えています。

答えて

5

まず、アプリケーションをNewsstandKitフレームワークに弱くリンクするために必要なもの。これにより、iOSバージョン< 5のデバイスがライブラリの不足によりクラッシュすることがなくなります。

実行時にNKメソッドを呼び出したり、iOS <で使用できないNKクラスを参照しないようにする必要があります。このような場合、NSClassFromString()や他のobj-cランタイム機能などのメソッドを使用できます。これらの機能の存在を動的に検出します。

私がこのような場合に行うことができることは、コンパイルレベルですべてのNewsstandの内容を分離できるようにするプリコンパイラ指令を提供することです。このようにして、SDK 4(もしあれば)を使ってコンパイルしようとし、コンパイラのエラーや警告を確認することができます。

など。あなたはPrefix.pchにこの


#define WILL_USE_NK 

のような定義を追加した場合、あなたは、このように全てのNK参照を挟むことができます。


#ifdef WILL_USE_NK 
... your NK statements go here ... 
#endif 

その後、あなたはSDK4でアプリをコンパイルする時期は、これを維持しますiOS4デバイスに有効なSDK4の実際のコンパイル(テスト可能)が得られます.NOSの参照はすべてiOS4アプリケーションで使用されません。 次に、この定義を#undefして、アプリを配布する前にSDK5でコンパイルする必要があります(もちろん、iOS 4.xを最小限の目標として維持する必要があります)。

もちろんこのように、すべての間違いから保護されるわけではありませんが、少なくともあなたはNKの参照を隔離しています。

アプリケーションのビジネスロジックに関するより優れた戦略については、これはあなた次第です。ニューススタンドはバックグラウンドダウンロードなどのさまざまな面を担当しているため、簡単な作業ではありません。雑誌モデルは、既存のモデルとNKIssueの機能に分かれていますが、これらはすべてこの特定の質問を超えた実装の詳細です。

+0

こんにちはViggio、これは素晴らしいアイデアです、ありがとうございます。これにより、下位互換性の問題を引き起こす可能性のある部分を分離しながら、コードを統一的に保つことができます。どうもありがとう! – James

関連する問題