更新了Xcode8之后,簡直被它"強(qiáng)大"的報錯能力所折服,各種莫名其妙的錯誤,下面是我的一些錯誤整理及相應(yīng)的解決辦法,有很多我都遇到過,親測可以,還有一些是從網(wǎng)上搜集的.
前言
我個人之前的Xcode7版本不是從AppStore上下載的,因為下載速度太慢,而且遇到過下載過程中提示我下載失敗的問題,所以我直接在某云盤下載了一個dmg格式的Xcode,而這次升級Xcode8我是在AppStore上下載安裝的(是直接下載安裝,不是更新),因為AppStore里面的更新界面,沒有顯示可用的Xcode8更新,我只能重新下載安裝,安裝好后發(fā)現(xiàn)它直接覆蓋了之前的版本,而且打開我的項目工程,也沒有遇到路徑不對報錯的問題,正當(dāng)我高興的時候,這個時候悲劇就來了,莫名其妙的報了十個紅色的錯誤,下面是問題截圖。

上圖顯示的這個問題,提示我有未申明的定義,就是告訴我某些宏定義不存在,我檢查了pch文件的路徑,是相對路徑?jīng)]有問題,所以排除了宏定義頭文件路徑引用不對的原因,我還嘗試了重啟Xcode,因為之前有的時候莫名其妙出現(xiàn)的比如無法導(dǎo)入頭文件的問題,我直接重啟Xcode之后就好了,但是這次沒能如我所愿。最后我嘗試刪除編譯器的DerivedData數(shù)據(jù),之后這個問題解決了。具體步驟如下:
點擊Finder--->前往文件夾/Users/你自己的電腦/Library/MobileDevice/ ----->找到資源庫下的Developer -----> 在Developer下找到Xcode目錄------->最后在Xcode目錄下找到DerivedData目錄 --------->刪除出錯的工程,之后重啟工程就好了,問題迎刃而解
截圖中所示警告還有的明確告訴我們在C99的規(guī)范中,不允許出現(xiàn)隱含聲明的用法。這是C99規(guī)范中增加的規(guī)則,不過即便不遵守此規(guī)則,也僅僅是一個警告而已。
什么是隱含聲明呢,也很簡單,就是你調(diào)用函數(shù)的c文件中,沒有正確包含對應(yīng)的頭文件。一般來說,c,c++都會將類,函數(shù),的聲明放在頭文件中,這樣在需要的時候包含對應(yīng)頭文件就可以了,在編譯器的前期處理中,需要通過頭文件來建立一些函數(shù),變量,類的表,如果調(diào)用到了聲明中沒有的函數(shù),編譯器會認(rèn)為是有危險的,顯而易見,如果直接調(diào)用函數(shù),在運行期間會出現(xiàn)程序異常。
因此強(qiáng)烈建議大家不要忽略這個警告,更不要象個別文章建議的那樣把編譯環(huán)境配置成C89,這樣隱患依然存在。
看來在解決這些警告之前,還是多了解一下C89, C99這些語言標(biāo)準(zhǔn)比較好。
2.iOS 10 相機(jī),相冊,通訊錄等系統(tǒng)權(quán)限問題
如果升級了iOS 10的手機(jī)下載了App,可能會導(dǎo)致應(yīng)用崩潰。具體步驟如下,在plist文件添加下列字段即可。(凡是系統(tǒng)權(quán)限的問題,都需要在plist文件中,添加如下字段,HealthKit也需要,比如應(yīng)用中涉及到讀取用戶的健康數(shù)據(jù))

下面是一些常用的配置
| 系統(tǒng)權(quán)限 | 對應(yīng)字段 |
|:----: |:------:|
|相機(jī)| Privacy - Camera Usage Description|
|麥克風(fēng)|Privacy - Microphone Usage Description|
|相冊| Privacy - Photo Library Usage Description|
|通訊錄|Privacy - Contacts Usage Description|
|藍(lán)牙|Privacy - Bluetooth Peripheral Usage Description|
|定位|Privacy - Location When In Use Usage Description|
|日歷|Privacy - Calendars Usage Description |
3.iOS10 消息推送
用過極光推送的童鞋都知道,分為調(diào)試環(huán)境和正式環(huán)境,使用Xcode 8版本以后打包的應(yīng)用,需要在Xcode 8中開啟下面的功能,否則可能導(dǎo)致正式環(huán)境打包上傳的應(yīng)用無法接受到推送消息,極光后臺推送的消息可能還會收到,但是自己服務(wù)器后臺推送的消息,可能無法接收到。

iOS 10還引入新的推送framework,如下圖。

4.遇到xib下報的錯誤
如果你用SVN管理項目,我建議你,直接找到報錯的xib文件,revert一下,我就是這樣解決的。還有一種是在Xcode下打開xib文件,會提示你選擇模擬器,如下圖:

5.證書管理問題
新版的Xcode提供了證書管理功能,只要勾選下面的按鈕。它會生成一個應(yīng)用于你本地電腦的證書和配置文件。

6.屏蔽雜亂無章的log打印
更新Xcode8之后,新建立工程,都會打印一堆莫名其妙看不懂的Log.
屏蔽的方法如下:Xcode8里邊 Edit Scheme-> Run -> Arguments, 在Environment Variables里邊添加OS_ACTIVITY_MODE = Disable

7.代碼注釋插件不正常
這個是因為蘋果解決xcode ghost,把插件屏蔽了。
解決方法打開終端,命令運行: sudo /usr/libexec/xpccachectl然后必須重啟電腦后生效
日后會繼續(xù)整理總結(jié)的,謝謝
新增 升級了Xcode之后,打開之前的工程,出現(xiàn)Xcode一直loading,無法載入的現(xiàn)象。
出錯原因:可能是上次強(qiáng)制退出時保存xcode出錯,導(dǎo)致之后每次打開xcode都會加載這個錯誤的工程,出現(xiàn)假死現(xiàn)象。
打開終端:cd /Users/mac/Library/Autosave\ Information/ (其中mac為當(dāng)前登錄用戶名)
刪除下面的文件:rm -rf Unsaved\ Xcode*
然后重新打開xcode就正常了。