17

プロジェクトの 1 つで、Xcode に奇妙な問題が発生しています。

コードを書き始めると、多数のエントリを提案するオートコンプリートに慣れています。何らかの理由で、昨日から、これは機能しなくなりました。「and」、「the」、「Andy」、「MyCompanyName」などの奇妙なオートコンプリート エントリが表示されるようになりました。

これは以前には発生しなかったため、なぜ今になって発生したのか、私のプロジェクトの 1 つだけで混乱しています。私はこのサイトをかなり長い間検索して修正を求め、派生データを消去し、Xcode を終了し、Xcode プロジェクトからワークスペースとユーザー ファイルを削除して再起動しようとしましたが、その後、オートコンプリートはしばらくの間機能します、約 30 秒のコーディング後に再び中断します。

オートコンプリート ソリューションが表示されることもありますが、プレーン テキスト (クラス インジケーターなし) だけである場合もあれば、完全に機能しなくなる場合もあります。

他の誰かがこのようなことを経験し、解決策を提供できますか?

4

8 に答える 8

44

オートコンプリートと構文の強調表示が失われ続けるプロジェクトで長い間苦しんでいました。Derived Data フォルダを削除して Xcode を再起動すると、一時的に修正され、最終的にはほとんど筋肉の記憶になりました。私の問題は、複数のプロジェクトを含むワークスペースを使用することで悪化したようで、その多くは相互に依存していました。問題はclangインデクサーにあったことが判明しました。プロジェクトは問題なくコンパイルされますが、インデクサーからの出力を見ると、エラーが散らばっていました。これらすべてを修正すると、問題が解決しました。

何かをする前に:ワークスペース内のすべてのプロジェクトのすべてのターゲットが正常にコンパイルされることを確認してください。それは警告なしです。これは私の側では大きな失敗でした - 私は古いターゲットを持っていましたが、それはきれいにコンパイルされませんでした。これらの一部は未使用で削除できましたが、他は ARC に変換されたターゲットでモジュールを使用する非 ARC であり (それらのターゲットも変換されました)、コード修正が必要なだけのものもありました。

これらの問題をすべて解決したら、まず、プロジェクトの完全なインデックスを作成して、インデクサーがどこで失敗しているかを知る必要があります。

  • まず、Xcode が閉じていることを確認してから、ターミナルに次のように入力して、インデクサーの警告メッセージのレベルを上げます。

     defaults write com.apple.dt.Xcode IDEIndexingClangInvocationLogLevel 3
    
  • 次に、プロジェクト/ワークスペースの Derived Data フォルダー (おそらく~/Library/Developer/Xcode/DerivedData/ your project name-some gibberish ) を見つけて削除します (ただし、おそらく移動する必要があるため、Derived Data フォルダーを開いたままにしておきます)。戻って、これを数回行います。

  • 次に、コンソール アプリを開いて [Clear Display] をクリックし、フィルターを [IDE] に設定して、関心のあるメッセージのみを表示します。

  • 最後に、問題の原因となっている Xcode とプロジェクト/ワークスペースを開くと、コンソールがメッセージでいっぱいになるのがわかります。

  • エラーを探すには、コンソール フィルターを「エラー:」に変更します。これをゼロにすることが目標です。

  • 私が見つけたエラーの大部分は、ヘッダー ファイルの欠落でした。Xcode 自体は、インデクサーよりもスマートなようです。インデクサーではできない他のプロジェクトのヘッダー ファイルを見つけてインクルードできるようです。

  • そのため、「致命的なエラー: 'somefile.h' ファイルが見つかりません」というメッセージが表示された場合は、そのファイルのパスをターゲットのビルド設定のユーザー ヘッダー検索パスに追加してください。これを行うために私が見つけた最良の方法は、フィールドをダブルクリックしてポップアップを取得し、フォルダーをファインダーからそこにドラッグすることです。これにより新しいエントリが追加されますが、同じワークスペースにあると仮定すると、相対ファイル パスが追加されます (これは、将来ワークスペース フォルダーを移動する場合に重要です)。同じプロジェクトに複数のターゲットがある場合は、ターゲット レベルではなくプロジェクトで検索パスを設定し、ターゲット検索パスを$(inherited)に設定できます。

  • ライブラリまたはフレームワークで同様の問題が発生する可能性があります。再度、適切な検索パスを更新してください。

  • いくつかのエラーを修正したら、Xcode を閉じ、コンソールをクリアし、プロジェクトの派生データを削除し、Xcode を開いて再度インデックスを作成します。

  • すべてのエラーがなくなるまで繰り返します。

この適切な場所に着いたら、コードのオートコンプリートと構文の強調表示が魅力的に機能するはずです:)

于 2012-04-20T11:10:52.870 に答える
5

それでもXcode4.3.2で時々私に起こります、

私は単にこれを行います:

Xcode>オーガナイザー>プロジェクト>プロジェクトの選択>派生データ>削除ボタンをクリック

これにより、インデックスも削除されます。その後、通常はXcodeを再起動すると、インデックスの再作成が開始され、構文の強調表示とオートコンプリートが再び返されます。(私は常にXcodeを再起動するわけではありませんが、画面から何時間も起動するのをやめる言い訳は、あなたのグラズボールにとって常に良いことです!)

まれに、これが比較的痛みを伴わないことが起こります。

于 2012-06-04T17:17:03.373 に答える
4

ほとんどの場合、この問題に遭遇して DerivedData を削除すると修正されますが、1 つのケースでは修正されませんでした。作成したソース ファイルを特定のターゲットに接続できませんでした。ターゲット ソースに接続すると、強調表示が機能し始めました。他の解決策が機能しない場合は、これが問題である可能性があります。

于 2013-03-06T06:13:17.980 に答える
3

ビルド設定で「GCC_INCREASE_PRECOMPILED_HEADER_SHARING」を検索し、YES に変更します。-これは私にとってはうまくいきました。

GCC_INCREASE_PRECOMPILED_HEADER_SHARING

于 2013-09-05T11:02:28.157 に答える
2

本当に恥ずかしいです。誤って、Xcode の [設定] > [テキスト編集] > [コード補完] でチェック マークを外し、考えられるすべての解決策を試しました。

他のソリューションを掘り下げる前に、この設定も確認してください。

Xcode オートコンプリート設定

于 2013-11-18T10:55:59.790 に答える
0

この問題は、次の方法で修正できる場合があります。

  1. プロジェクトの.pchファイル内のすべてのエントリをコメントアウトします(通常、コメントアウトすると、Xcodeはオートコンプリートを選択します)
  2. プロジェクトのクリーニング
  3. 未使用の.pchファイルを元に戻す
  4. 再建プロジェクト

これで、正しい構文の強調表示が表示され、オートコンプリートが正しいはずです。

于 2012-03-30T09:35:35.947 に答える
0

失敗しているプロジェクトの派生データだけを削除するだけでは不十分

すべてのプロジェクトのすべての派生データを削除し、Clean プロジェクトを実行して Xcode を再起動する必要がありました

すばらしい

于 2014-11-19T16:17:10.777 に答える