Xcode 6プロジェクトをXcode 7にアップグレードし、リンクされた(5.1)よりも新しいiOSバージョン(5.1.1)で警告が表示されるのを確認し始めました。
この警告を修正する方法は?
私の場合、XCodeサブプロジェクトの1つのiOS-Deployment-Targetがベースプロジェクト(7.0)よりも高い(7.1)ため、この警告が生成されました。 cococapodを使用している場合、Podfileで間違ったiOSプラットフォームバージョンを指定すると、この設定ミスが発生する可能性があります。私の例では、Podfileで指定しました
platform :ios, '7.1'
一方、XCode-ProjectのDeployment-TargetをiOS 7.0に設定します。サブプロジェクトのDeploymentTargetをBaseProjectと同じiOSバージョンに設定すると、この警告が修正されます。
更新:Xcode 7.3(7D175)で解決されたようです。-wフラグを削除したため、警告は表示されなくなりました。
これは、Xcode 7.0および7.1B1の既知のバグのようです(バグ#21813082)。
一時的な回避策として、広範な警告を抑制するために、ビルド設定->その他のリンカーフラグに-wフラグを追加できます。
これをデバッグビルド設定に追加して、次のコードをAppDelegateに挿入しただけです。
#ifdef DEBUG
#warning Linker warnings suppressed (-w in build settings)
#endif
これにより、少なくとも、すべてのソースに対して同じ警告がビルド結果にあふれるのではなく、実際の警告をすばやく見つけることができます(私の場合、150以上の警告が表示されました)。
私の場合、プロジェクトを8.4に設定しましたが、残りのサブプロジェクト/ターゲットはすべて9.0のままです。展開ターゲットの不一致が原因のようです。
Cocoapodsを使用している場合:
それらがすべて類似していることを確認してください。
「リンク->その他のリンカーフラグ」に「-w」を追加してみてください。
これは、mySDKが開発ターゲットmyProjectよりも大きいベースSDKでビルドされた場合に発生します。
私の場合、プロジェクトセクション(7.0)の展開ターゲットは、ターゲット展開ターゲット(8.0)とは異なりました。そのため、プロジェクトの展開ターゲットと、プロジェクト内のすべてのターゲットが同じであることを確認してください。
最初にProjectでiOS Deployment Targetを変更し、次にTargetsでDeployment Targetを変更します。 /Users/yourUser/Library/Developer/Xcode/DerivedData (rm -rf yourProject
)のファイルを削除します。ポッドを再度インストールし、警告に別れを告げます。
誰かが私と同じ困惑に苦しむ場合に備えて、外部ハードドライブにXcodeベータ版があり、システムが内部ドライブではなくそのドライブのツールを選択していることを発見しました。 (おそらく、新しいベータツールだったからでしょうか?)...ドライブを取り出すと問題が解決しました!
私の場合、プロジェクトで同じものを変更せずに、ターゲットのDeployment Targetを変更しました。
この問題を解決するために、プロジェクトとターゲットの両方で展開ターゲットを変更してから、ポッドを更新しました。
私の場合、最新のiOSでライブラリを構築しましたが、アプリの展開ターゲットはそれよりも低くなっています。したがって、他のリンカーフラグに-wを追加する以外にできることはないと思います