今天看到個(gè)問(wèn)題,編輯工程提示Unknown type name 'NSString',如下圖

導(dǎo)致出現(xiàn)異常的原因是是因?yàn)楣こ讨刑砑恿薢ipArchive(第三方開(kāi)源解壓縮庫(kù))

一般情況下出現(xiàn)“Unknown type name”是頭文件互相引用出現(xiàn)的,這里可以排除,由于源碼使用是c\c++與oc混編,
考慮新的XCode編譯文件類(lèi)型導(dǎo)致的,嘗試了幾種方案,下面三種可以解決問(wèn)題。
解決方案一:
選擇所有.c文件,將屬性的 identity and type 改為Objective-CSource。

解決方案二:
選擇所有.c文件,將.c修改為.m

解決方案三:
將Compile Sources As 改為 Objective-C++

方案三由于修改所有文件的編譯類(lèi)型,所有可能會(huì)導(dǎo)致其他包括c、c++代碼的提示錯(cuò)誤,不過(guò)都是些的提示異常,按提示修改即可。

另外,添加第三方庫(kù)一般步驟分三步:
1)拖入庫(kù)文件夾,copy一份加入自己的項(xiàng)目
2)添加庫(kù)所需要的框架或者動(dòng)態(tài)鏈接庫(kù)
3)ARC下修改編譯屬性 -fno-objc-arc
但是今天加入zipArchive ,按步驟加入,增加libz動(dòng)態(tài)庫(kù),修改-fno-objc-arc一下報(bào)了23個(gè)錯(cuò)誤(汗too
many errors emitted, stopping now),都是expected identifier or '(' ,unknown type name 'NSString',could
not build module 'Foundation',could not build module 'UIKit'。
通過(guò)百度,stackOverflow上找到解決方法:
在所在項(xiàng)目pch文件中,把自己所#import的頭文件做如下操作
#ifdef __OBJC__
#import
#endif
分析了一下,zipArchive庫(kù)是C OC C++文件混編,pch里面自加的頭文件是全局性的,當(dāng)在C文件import時(shí)其實(shí)是沒(méi)有意義的,也就是問(wèn)題出處,所以要ObjC區(qū)分開(kāi)編譯,這樣總是就解決了。