2011-12-05 73 views
1

我一直在嘗試調試這個問題數週,現在我已經取得了零進展。在我的一個項目中,除了像@property,@synthesize和BOOL,int,double等原始類型之外,我的.mm文件不再具有正確的語法着色.cpp文件很好。我已經嘗試了幾乎所有可以在網絡上找到的「修復」。我有:Xcode語法着色損壞.mm文件

  1. 在管理器下刪除項目的「衍生數據」。
  2. 在Finder中右鍵單擊該項目的.xcodeproject文件,選擇「Show Package Contents」並刪除除.pbxproj文件以外的所有文件。
  3. 產品>清潔
  4. 與編輯器混淆>語法着色選項。
  5. 確保我的所有標題搜索路徑都使用'$(SRCROOT)/'前綴。
  6. 確保所有的頭文件從這些路徑進口是由進口:

    #import <header.h> 
    

代替:

#import "header.h" 

我覺得我跳出選項。其他人是否有與我已經嘗試數百次的事情不同的修復?沒有正確的語法着色讓我瘋狂。

謝謝。

編輯:忘了提,我也看了一下日誌中Console.app看到這一點:[?T]

11年12月5日下午3時08分08秒的Xcode [7623] IDEIndexingClangInvocation:失敗保存PCH文件:/Users/jinser/Library/Developer/Xcode/DerivedData/ABBYY_MenuApp-ezwvcbulelfqwkftuwttlogvxsym/Index/PrecompiledHeaders/OpenCV_iPhone_Prefix-bqbegypvoktytjhgrfdzxrzeamix_ast/OpenCV_iPhone_Prefix.pch.pth

回答

3

你有沒有修改.PCH文件?如果您有一個不完全正確的.pch文件,這可能會中斷索引器。例如,如果您使用#import "header.h"(您確實需要#import <EmbeddedFramework/header.h>),則實際上在常規文件中編譯會很好(假設您的標頭搜索路徑設置爲查找header.h),但如果存在於.pch中,則會將索引器中斷爲這不是嚴格正確的。

嘗試刪除.pch文件的內容,然後刪除所有DerivedData並讓Xcode重新索引。如果事情現在突出顯示,你知道你的.pch是問題。

+1

謝謝,先生。當我終於看到自己的語法顏色正確時,我跳出座位開始唱歌(不是開玩笑)。我去了username/Library/Developer/Xcode/DerivedData來刪除適當的派生數據文件夾,而不是僅僅使用Xcode中的Organizer工具。由於某些原因,除了刪除DerivedData之外,從我的.pch中刪除#import 將修復它。乾杯! –

2

使用凱文·巴拉德的建議,我從這個改變了我的.PCH文件:

#ifdef __OBJC__ 
#import <Foundation/Foundation.h> 
#import <UIKit/UIKit.h> 
#import <opencv/cv.h> 
#endif 

到:

#ifdef __OBJC__ 
#import <UIKit/UIKit.h> 
#import <opencv/cv.h> 
#endif 

在Finder中,我也刪除了相應的導出數據文件夾中去的用戶名/圖書館/開發商/ Xcode中/ DerivedData。

Voilà - 語法現在着色正確。我的瘋狂終於消退了。

編輯(10天后):但我會補充說,這並不總是奏效。我的代碼意義再次被破壞,執行這些步驟並沒有解決它。似乎每個案例都是獨一無二的,而且每當發生這種情況時,您都必須浪費數小時的時間來解決問題。希望蘋果能夠使Xcode在未來的這些錯誤中更加健壯。