2012-03-26 14 views
0

私はCustomURLConnectionクラスを作成しました。iOSバージョンに基づいて異なるインターフェイスをインポート

のiOSの私のバージョンが5.0よりも大きい場合には、その後、私はどのように私はそれに行くか

@interface CustomURLConnection : NSURLConnection 

を使用したい

@interface CustomURLConnection : NSURLConnection<NSURLConnectionDataDelegate,NSURLConnectionDelegate> 

か、他を使用したいですか?

+1

両者の違いは何ですか? –

+0

@OhhMee。私は質問を更新しました。これをチェックしてください!! – Bharath

答えて

2

あなたはこれらの使用プリプロセッサディレクティブを行うことができます。

#ifdef __IPHONE_5_0 
//Put your ios 5 specific code here 
#else 
//Put your other code here 
#endif 
+0

これらのプリプロセッサディレクティブを使用して5.0より大きいバージョンを確認する方法 – Bharath

+0

この定数は、5以上のすべてのバージョンで定義されます。ただし、以下に記載されているように、これが必要なものであることを確認する必要があります。機能がわずかに異なる場合は、実行時にバージョンを確認する必要があります。 – borrrden

+0

この質問に再訪すると、この回答が実際に正しいかどうかはわかりません。私はこれが実際のiOSバージョンではなく、コンパイルSDKバージョンに基づいていると思う。この回答は機能しましたか? – borrrden

1

あなたはアプリの二つの別々のバージョンを構築し、販売していますか?

プリプロセッサディレクティブは、複数のバージョンのアプリが別々にコンパイルされている場合にのみ意味があります。ユーザーのiOSバージョンに基づいて異なる動作をする必要のあるアプリがある場合は、ランタイムチェックでそれを行う必要があります。

2

@interfaceはコンパイラが名前付きシンボルがクラス型であることをコンパイラが認識できるようにするコンパイル時の構造で、他のアクタによるクラスの誤用に基づいて警告メッセージを適切に生成するのに十分な情報を与えます。

@interfaceには、アプリケーションが起動するOSのバージョンによって異なるようにするために何もできません。何を期待していますか?受け取ったコンパイラの警告をすべて表示してください。

のObjective-Cの世界で最良のソリューションは、アプリがInfo.plistファイル内のために設計されており、NSClassFromStringを使用して(実行時にチェックするために、respondsToSelector:など最低のiOSバージョンを設定するために、最新のSDKに対して構築することは常にあります)結果として存在しない可能性のある機能については、

あなたのケースでは、そこにプロトコル宣言を残して、それについて二度考えても問題はありません。

関連する問題