0

私のコードでは、

[[self presentingViewController] dismissViewControllerAnimated:YES
                                                    completion:dismissBlock];

問題は、展開ターゲットが 5.0 に設定されていることです。

ベースSDKは6.1ですが。

XCode から警告が表示されるはずがありませんでしたか? (上記の方法はiOS6で導入されたと思うので)。

4

3 に答える 3

3

残念ながら、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 の問題が検出された場合にのみ行ってください。すべてに対してこれを行わないでください。

于 2013-08-15T12:31:37.723 に答える
0

警告するのはよくありません。SDK のデフォルト バンドルには、この警告は含まれていません。

于 2013-08-15T12:31:59.353 に答える