19

サポートされている最小ターゲットのSDKで使用できないメソッドを呼び出しているときに、Xcodeに通知させる方法はありますか?

たとえば、メソッド[NSURLConnection sendAsynchronousRequest:queue:completionHandler:]。この方法はiOS5以降で利用できます。しかし、私のアプリケーションの最小ターゲットはiOS4です。

そのメソッド(sendAsync)を使用する場合、サポートしようとしている最小のターゲットではそのメソッドを使用できないことをXcodeに通知してもらいたいです。

プリプロセッサ設定に__IPHONE_OS_VERSION_MAX_ALLOWED=40000を入れてみましたが、それは役に立たないAppleSDKエラーの束をトリガーするだけです。(おそらく私のアクティブなSDKがiOS5.1であるため)

古いSDKを入手してXcodeにインストールする唯一の解決策はありますか?

もっと簡単な解決策はありますか?

4

3 に答える 3

7

残念ながら、これを行うための標準的な方法はありません。ターゲットOSをベースSDKよりも小さい数に設定することにより、Xcodeはライブラリとフレームワークを弱くリンクします。その場合、Xcodeは、ターゲットOSで使用できない可能性のあるメソッドを使用することについて警告しません。

ベースSDKを一時的に低く設定することもできますが、それが常に機能するとは限りません。生成されたエラーと警告のほとんどを無視したいので(コードパスで条件付きでのみ呼び出されるため)、多くの警告とエラーは、コンパイラが意味のある出力を提供する前に解決する必要がある他のエラーに依存しています。

Appleからもサードパーティからも、このための静的分析ツールは存在しないと思います。

于 2012-05-29T08:56:44.747 に答える
6

いくつかの調査を行った後、それについてのApple Docを読み、いくつかのことを試みました。解決策は、Appleから古いXcode DMGをダウンロードし、展開ターゲットと同じSDKの.pkgファイルを取得して、Xcodeのバージョンにインストールすることです。方法は次のとおりです。

  1. Appleから古いXcode.dmgをダウンロードする
  2. DMGを開きます
  3. ターミナルで、パッケージに移動します:「cd / Volumes / [DMG] /Packages;open。」
  4. iPhoneSDK_4.0.pkgのような必要なSDKを見つけます
  5. そのパッケージをインストールしますが、インストールディレクトリを/ Applications / Xcode / Contents/Developerに変更します
  6. Xcodeが開いている場合は、再起動します。

デプロイメントターゲットと同じSDKができたので、BaseSDKを同じに設定します。ビルドすると、メソッドが見つからないという警告が表示されます。プロジェクトは、新しいバージョンのXcodeで古いBaseSDKを使用して正常にビルドされる場合とされない場合がありますが、それは問題ではありません。respondsToSelector:を使用して機能チェックでラップする必要のあるメソッド呼び出しを見つけました。

于 2012-05-29T16:51:24.590 に答える
2

Xcode 7.3以降、コンパイラはこれらの警告を生成できるようになりました。この回答-Wpartial-availabilityで説明されているように、ビルド設定で警告フラグを設定するだけです。

于 2017-09-22T04:54:52.583 に答える