2012-04-19 7 views
0

現在のSDKバージョンで廃止された機能を使用すると、コンパイラは警告を表示します。 私はそれに対して正反対の機能を見つけました。iOSでコンパイル時に機能の紹介をチェックする方法は?

特定のSDKバージョンで定義されていないクラスまたはメソッドを使用すると、コンパイラは警告を出します。

どうすればこの機能を利用できますか?私は

#undef  __IPHONE_OS_VERSION_MAX_ALLOWED 
#define  __IPHONE_OS_VERSION_MAX_ALLOWED   40000 

、次のようにプレフィックスヘッダ上の定義を置くことによって__IPHONE_OS_VERSION_MAX_ALLOWEDを定義しようとしたが、それもSDK自体にバージョン不一致のいずれかをキャッチします。 (UIKitなど)

私は、ライブラリコードにiOS 4.0の下位互換性が必要なため、いくつかの自動化された方法で下位互換性を確認したいと考えています。私は機能の可用性テストがすべてを解決するわけではないことを知っていますが、これにより作業がずっと楽になります。

コンパイラで特定のSDKバージョンの機能の有無を確認するにはどうすればよいですか?

答えて

0

これは、respondsToSelectorのジョブのように聞こえます。ここでは、現在実行しているOSにセレクタが存在するかどうかを確認できます。

あなたのアプリを将来的に証明したいのであれば、サポートしたい最小のOSバージョンに対して定義された最新のAPIを常に探してください。

Here is a related question about 'respondsToSelector' that may help you out

+0

不明な点は申し訳ありませんが、コンパイル時に自動後方互換性テストが必要でした。とにかくありがとう。 – Eonil

0

NSClassFromStringを使用してattempを使用する前に、クラス(機能)をチェックする必要があると思います。

Class myClass = NSClassFromString(@"CLassThatYouWantToUse"); //get the class object 
if (myClass != nil) 
    { 
     // The device will support this class.. so carry on... 
    } 
else 
     { 
      // The device doesn't support this class. 
     } 
関連する問題