簡體   English   中英

Xcode 4.x中的代碼自動完成/語法突出顯示問題

[英]Issue with code autocompletion / syntax highlighting in Xcode 4.x

在我的一個項目中,我在Xcode中遇到了一個相當奇怪的問題。

當我開始編寫代碼時,我習慣了自動完成,為我提供了大量條目。 出於某種原因,從昨天起,這已停止工作。 我現在得到奇怪的自動完成條目,如“和”,“the”,“Andy”,“MyCompanyName”等。

這從來沒有發生過,所以我很困惑為什么它現在發生,並且只在我的一個項目上。 我搜索這個網站已經有一段時間了解任何修復,我試圖清理Derived Data,退出Xcode,從Xcode項目中刪除工作區和用戶文件並重啟,但這樣做后,自動完成工作了一段時間,然后在約30秒的編碼后再次中斷。

我有時可以看到自動完成的解決方案,但只是純文本(沒有類指示符),然后其他時候它完全停止工作。

有沒有其他人經歷過這樣的事情並且可以提供一些解決方案?

我長期遭受一個不斷自動完成和語法突出顯示的項目。 刪除Derived Data文件夾並重新啟動Xcode會暫時修復它,最終幾乎成為肌肉記憶。 使用包含多個項目的工作空間似乎加劇了我的問題,其中許多項目彼此依賴。 事實證明問題出在clang索引器上。 該項目可以干凈地編譯,但是查看索引器的輸出時會出現錯誤。 修復所有這些解決了我的問題。

在執行任何操作之前 :確保Workspace中所有項目中的所有目標都清晰地編譯。 這沒有任何警告。 這對我來說是一個很大的失敗 - 我的舊目標只是沒有干凈地編譯。 其中一些是未使用的,可以刪除,另一些是非ARC,它們使用已轉換為ARC的目標中的模塊(也轉換了這些目標),有些只需要修復代碼。

一旦你解決了所有這些問題,我們首先需要知道的是索引器失敗的地方,通過完成項目的完整索引。

  • 首先,確保Xcode已關閉,然后通過進入終端打開索引器警告消息級別:

      defaults write com.apple.dt.Xcode IDEIndexingClangInvocationLogLevel 3 
  • 然后找到項目/工作區的Derived Data文件夾(可能〜/ Library / Developer / Xcode / DerivedData / 你的項目名稱 - 一些亂碼 ),並刪除它(但保持Derived Data文件夾打開,因為你可能不得不去回來並做了幾次。

  • 接下來,打開Console應用程序並單擊Clear Display,然后將過濾器設置為“IDE”以僅顯示我們感興趣的消息。

  • 最后,打開Xcode和導致問題的項目/工作區,您將看到控制台開始填充消息。

  • 要查找錯誤,請將控制台過濾器更改為“錯誤:” - 我們的目標是將這些錯誤減少到零。

  • 我發現的大多數錯誤都缺少頭文件。 Xcode本身似乎比索引器更聰明。 它似乎能夠從索引器不能的其他項目中查找和包含頭文件。

  • 因此,在任何您看到“ 致命錯誤:'somefile.h'文件未找到 ”的任何地方,請確保將該文件的路徑添加到目標的構建設置中的用戶標題搜索路徑 我發現這樣做的最好方法是雙擊該字段以獲取彈出窗口,然后將文件夾從取景器拖入其中。 這會添加一個新條目,但假設它在同一個工作區中,它會添加一個相對文件路徑(這在將來移動工作區文件夾時很重要)。 如果同一項目有多個目標,則可以在項目而不是目標級別設置搜索路徑,並將目標搜索路徑設置為$(繼承)

  • 您可能會遇到與庫或框架類似的問題 - 再次更新相應的搜索路徑。

  • 一旦修復了一些錯誤,關閉Xcode,清除控制台,刪除項目的Derived Data,打開Xcode並讓它再次索引。

  • 重復,直到所有錯誤消失。

一旦你在這個好地方,代碼自動完成和語法高亮應該像魅力:)

偶爾在Xcode 4.3.2上偶然發生在我身上,

我只是這樣做:

Xcode>管理器>項目>選擇項目>派生數據>單擊刪除按鈕

這也會刪除索引。 然后我通常重新啟動Xcode並開始重新索引,然后我再次獲得語法高亮和自動完成功能。 (我甚至不總是重新啟動Xcode - 但是從屏幕上開始數小時休息的借口對於你的glazball來說總是一件好事!)

它很少發生,這是相對無痛的。

大多數時候我遇到這個問題,刪除DerivedData會為我修復它,但有一個案例沒有。 轉向我無法將我創建的源文件連接到任何特定目標。 一旦我將它連接到目標源突出顯示開始工作。 如果其他解決方案不起作用,這可能是您的問題。

在構建設置中搜索“GCC_INCREASE_PRECOMPILED_HEADER_SHARING”並將其更改為YES。 - 這對我有用。

GCC_INCREASE_PRECOMPILED_HEADER_SHARING

它真的很尷尬。 我錯誤地取消了Xcode首選項>文本編輯>代碼完成中的復選標記,我嘗試了所有可能的解決方案。

在深入研究任何其他解決方案之前,請檢查此偏好:

Xcode自動完成首選項

僅刪除失敗的項目的派生數據是不夠的

我不得不刪除所有項目的所有派生數據,做了一個Clean項目並重新啟動Xcode

驚人

這是什么東西? 我沒有從編譯器收到任何File not found錯誤。 通過在Project's Build Phases上從Compiler Sources 刪除 UnitTestUITestTarget 一些丟失文件鏈接來修復該問題。

在此輸入圖像描述

您可以通過以下方式解決此問題:

  1. 注釋掉項目的.pch文件中的所有條目(通常當你這樣做時,Xcode會選擇自動完成)
  2. 清潔項目
  3. 重新打開.pch文件
  4. 重建項目

現在,您應該能夠看到正確的語法突出顯示,並且自動完成應該是正確的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM