更新了Xcode8之后霎苗,簡直被它"強(qiáng)大"的報(bào)錯能力所折服,各種莫名其妙的錯誤已艰,下面是我的一些錯誤整理及相應(yīng)的解決辦法痊末,有很多我都遇到過,親測可以哩掺,還有一些是從網(wǎng)上搜集的.
前言
我個人之前的Xcode7版本不是從AppStore上下載的凿叠,因?yàn)橄螺d速度太慢,而且遇到過下載過程中提示我下載失敗的問題嚼吞,所以我直接在某云盤下載了一個dmg格式的Xcode盒件,而這次升級Xcode8我是在AppStore上下載安裝的(是直接下載安裝,不是更新)舱禽,因?yàn)锳ppStore里面的更新界面履恩,沒有顯示可用的Xcode8更新,我只能重新下載安裝呢蔫,安裝好后發(fā)現(xiàn)它直接覆蓋了之前的版本切心,而且打開我的項(xiàng)目工程垂券,也沒有遇到路徑不對報(bào)錯的問題趾代,正當(dāng)我高興的時候余佃,這個時候悲劇就來了谱轨,莫名其妙的報(bào)了十個紅色的錯誤镊叁,下面是問題截圖缩宜。
上圖顯示的這個問題的猛,提示我有未申明的定義安皱,就是告訴我某些宏定義不存在爷贫,我檢查了pch文件的路徑认然,是相對路徑?jīng)]有問題,所以排除了宏定義頭文件路徑引用不對的原因漫萄,我還嘗試了重啟Xcode卷员,因?yàn)橹坝械臅r候莫名其妙出現(xiàn)的比如無法導(dǎo)入頭文件的問題,我直接重啟Xcode之后就好了腾务,但是這次沒能如我所愿毕骡。最后我嘗試刪除編譯器的DerivedData數(shù)據(jù),之后這個問題解決了岩瘦。具體步驟如下:
點(diǎn)擊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)為是有危險(xiǎn)的涵叮,顯而易見惭蹂,如果直接調(diào)用函數(shù),在運(yùn)行期間會出現(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下報(bào)的錯誤
如果你用SVN管理項(xiàng)目烹困,我建議你玄妈,直接找到報(bào)錯的xib文件,revert一下髓梅,我就是這樣解決的拟蜻。還有一種是在Xcode下打開xib文件,會提示你選擇模擬器枯饿,如下圖:
5.證書管理問題
新版的Xcode提供了證書管理功能酝锅,只要勾選下面的按鈕。它會生成一個應(yīng)用于你本地電腦的證書和配置文件奢方。
6.屏蔽雜亂無章的log打印
更新Xcode8之后搔扁,新建立工程,都會打印一堆莫名其妙看不懂的Log.
屏蔽的方法如下:Xcode8里邊 Edit Scheme-> Run -> Arguments, 在Environment Variables里邊添加OS_ACTIVITY_MODE = Disable
7.代碼注釋插件不正常
這個是因?yàn)樘O果解決xcode ghost蟋字,把插件屏蔽了阁谆。
解決方法打開終端,命令運(yùn)行: 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就正常了熬拒。