残念ながら、Xcode は、展開 SDK で使用できないシンボルを使用しているかどうかをチェックしません。
コードをベース SDK に対してのみチェックします。
ただし、これにはDeployMateなどのサードパーティ ソフトウェアを使用できます。
そうは言っても、他の人が指摘したようにdismissViewControllerAnimated:completion:
、iOS 5 以降で利用できるので、コードは安全です。
ただし、DeployMate などを使用して、アプリで使用できない API または非推奨の API を確認することを常にお勧めします。
編集
コメントへの回答は次のとおりです。
展開ターゲットが 5.0 でベース SDK 6.0 の場合、iOS 5 デバイスで 6.0 SDK で使用可能なシンボルを使用すると、アプリケーションがクラッシュします。
ただし、Xcode はコンパイル時にこれについて警告しないため、サードパーティ製のソフトウェアが必要になります。
問題のあるシンボルを特定したらrespondsToSelector:
、単純なバージョン チェックよりも優れているため、使用する方法です。
このようにして、両方の SDK バージョンで実行される条件付きコードを作成できます。
if( [ someObject respondsToSelector: @selector( someIOS6Method ) ] )
{ /* iOS 6 code */ }
else
{ /* iOS 5 code */ }
これは、SDK の問題が検出された場合にのみ行ってください。すべてに対してこれを行わないでください。