學(xué)習(xí)寫簡書博客示惊,每次寫簡書都是對過往的回顧
好消息好港,Swift 4.2 在 Xcode 10 beta 版上可以使用了,在 Swift 4.1 的基礎(chǔ)上更新了很多語言特性米罚,為 Swift 5 中 ABI 穩(wěn)定做好準(zhǔn)備钧汹。
坑:swift問題
Swift 4.2 和 Swift 4.1 源碼兼容,但是和其他發(fā)布版本的二進(jìn)制不兼容录择。Swift 4.2 是 Swift 5 實(shí)現(xiàn) ABI 穩(wěn)定(不同的 Swift 版本編譯的應(yīng)用程序和庫之間實(shí)現(xiàn)兼容)的一個中間階段拔莱。ABI 的特性在集成進(jìn)最終的 ABI 之前會接收社區(qū)的大量反饋。
我本著有坑先趟的心情升級了 Xcode 10隘竭,然后就坑了塘秦。大量代碼不兼容,其中還有很多是第三方框架动看。修改框架尊剔? 別逗了。于是只能在兼容原來的代碼路上默默前行菱皆。
自身代碼不兼容
新版本特性:不能處理三個或者以上解包
let address = location?.address ?? ""
locationDetail.text = (location?.city ?? "") + (location?.district ?? "") + (address)
第三方代碼不兼容
解決方法
方法一
等作者發(fā)布新版
切換回swift4.0.3 或之前可用的版本
要等作者發(fā)布新版可能還會要一段時間
不過大廠更新都是比較快的须误,及時pod或carthage最新版就行了
若等不及的話那只有切換回原來的版本
方法二
點(diǎn)擊去官網(wǎng)
swift官網(wǎng)
找到你需要的版本
方法三
—— 下載Xcode歷史版本
1.打開鏈接:https://developer.apple.com/download/more/ 進(jìn)入頁面
2.在搜索框輸入Xcode,回車搜索.如圖,找到各種版本Xcode
小tip
升級之后你的Simulator存在打不開的情況
1.意思是刪除模擬器目錄下是所有文件。
rm -rf ~/Library/Developer/CoreSimulator/Devices
2.意思是殺死模擬器服務(wù)仇轻。
killall -9 com.apple.CoreSimulator.CoreSimulatorService
如果還不行霹期,就試試重啟大法。重啟下電腦再試試拯田。就可以了.
坑:重復(fù)的info.plist文件
為了向大家展示錯誤, 這里是我手動添加了Masonry的庫,其中Masonry庫中帶有info.plist文件
解決方法 : 刪除掉多余的info.plist文件,重新編譯即可
坑:在Xcode10中 c++.6.0.9消失了
第一反應(yīng)是去Build Phases里的Link Binary With Libraries進(jìn)行添加历造,然后發(fā)現(xiàn)選擇frameworks and libraries里已經(jīng)沒有了這個庫了,又回去看了一下Xcode9里是有的船庇。
Xcode10中l(wèi)ibstdc++相關(guān)的3個庫(libstdc++吭产、libstdc++.6、libstdc++6.0.9)應(yīng)該都是被徹底廢棄了鸭轮,如果你使用的三方庫中有依賴臣淤,請盡快和提供方溝通,告知他們遷移吧窃爷。如果自己開發(fā)使用邑蒋,也盡快考慮遷移的事宜吧.
將Xcode9的 libstdc++6.0.9.tbd 拷貝到Xcode10中使用。
坑: Copy Pods Resources失效
跳出了前兩個坑以后,滿心歡喜的運(yùn)行了項(xiàng)目, 出現(xiàn)了另一個巨坑 cocoapads的版本問題
解決辦法 : 需要升級CocoaPods版本>=1.4.0以上, 可見Github上的一個issues Xcode10 beta can't load bundles from CocoaPods
簡單來說: 更新cocoapads的版本
貼出來更新指令
//查看當(dāng)前版本號
pod --version
//安裝更新:
pod setup
//當(dāng)執(zhí)行完以后再執(zhí)行:
sudo gem install cocoapods