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估计也是因为不小心修改了库文件吧


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