Xcode莫名其妙問題could not build module 'Foundation'


原地址:http://my.oschina.net/ioslighter/blog/411810

今天用Xcode編譯項目時,遇到一個莫名其妙的問題:could not build module 'Foundation',以及could not build module 'UIKit',NSString.h expect identifier問題,提示的位置是在Pod的庫中。幾經查找,才發現是自己一時的粗心。。。

遇到這個問題時,發現真機編譯沒有問題,然後編譯其它項目時也提示類似的問題,最主要的是一個比較簡單的項目編譯時也會提示NSString.h expect identifier問題,突然警覺難道我不小心把NSString.h修改了?因爲上午我的確打開過NSString.h文件。

但是從提示來看根本找不出問題的真實位置,於是我在另一臺電腦上找到一份乾淨的NSString.h文件,與本機的NSString.h文件進行比較,就發現了問題所在:我把- (NSRange)rangeOfString:(NSString *)aString;這一行中的aString給刪了。。

我說蘋果你好歹也要給庫文件加一個只讀權限啊,害我苦苦尋找半天原因。不過,相對於那些把Xcode卸載再重新安裝的,我算幸運了。

NSString.h文件路徑:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSString.h


20150518更新:

另外一個看NSString.h文件是否被修改更簡單的辦法應該是打開NSString.h文件所在的文件夾,根據修改時間排序,如果NSString.h最近被修改過,肯定是NSString.h文件被修改了


別人總結的可能的原因:

可能性一:c,c++, oc兼容,就上樓上stackoverflow 的方法修改.pch就行了,或者還要在build parse裏面將oc設置爲oc++ 
可能二:照着錯誤提示有一項是@end缺少或者)缺少 ,編譯器檢測到由此提出的錯誤後20個左右就罷工了,見too many error emitted... 
可能性二:UIKit庫損壞或被修改(貌似ios5以上不能修改,一改就壞)  
                  解決一:通常通過刪除moduleCache就可以了,這也是網上通常的做法。 
                  解決二:我在本機上無論如果多次刪除moduleCache都無效,最後是問同學拿了個.h文件(懷疑被修改的)覆蓋後滿血復活! 
最後實在不行,無奈就徹底刪除xcode,記住要徹底,不是直接拿去垃圾桶,網上很多教程,重裝一個。 
提醒哦,刪除moduleCache要clean和reset模擬器一下。 

我想其中的最後一條徹底刪除Xcode估計也是因爲不小心修改了庫文件吧


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章