swift 3.0 正式版發布了差不多快乙個月了,斷斷續續的把手上和 swift 相關的遷移到了swift 3.0。所以寫點小總結。
在開發最初開發選擇 swift 的時候的很多決策也讓我這次少了很多任務作量。
陰差陽錯的,和 swift 相關的大部分介面都是用xib 畫的。而這個 xib 在這次遷移中得到了很大的優勢,xib 和 sb 的**不適配 swift 3。想當初要是使用**寫的 ui 的話,這次遷移改動估計會多很多吧。
對於乙個專案來說,三方庫似乎成了一道必選菜,但是如何去選擇這道菜呢?對於三方庫,當初的選擇是,能用 oc 就盡量用 oc。 畢竟可以oc 可以無縫銜接到 swift,而且還相對穩定。
在選擇 swift 相關的三方庫時,我盡量值選擇使用者比較多的庫,例如alamofire、snap、kingfisher、fabric 等,因為使用者比較多,開發者會更願意去維護,而不至於跳票。所以不會存在現在許多小夥伴面臨的問題,想遷移,但是有些庫沒有更新。至少對於我來說,當我想遷移的時候,所有和 swift 相關的三方庫都已經遷移到了 3.0 了。
得益於上面兩點,在遷移過程中少了不少工作量。
swift官博:
中文版:
我想在做遷移和做完遷移的同學改的最多的乙個就是 as anyobjct? 吧?
至少對於我來說是的。
和這個相關的基本是集合型別。在 swift 2 中我們乙個用 [anyobject] 來存放任何變數,甚至於存放struct型別的 string、array 等。但是按道理 swift 的 anyobject 指的是類,而 any 才是包括struct、class、func 等所有型別。但是為何 struct 可以放入 [anyobject] 呢?在 swift 2 的時候會針對string、int 等 struct 進行乙個 implicit bridging conversions。而到了 swift 3 則進行了乙個**fully eliminate implicit bridging conversions from swift**改動。
當然在我的專案中[anyobject]其實是小事,最麻煩的就是 [string:anyobject]。因為當初寫專案的時候,還是處於 oc to swift 的階段所以對於 dictionary ,基本採用了 [string:anyobject], 所以在修改的時候,在很多地方為了這個修改。
起初,我是照著 xcode 的提示,在 dictionary 後面的 value 後面加了乙個 as anyobjct?
後來漸漸的發現我做了一件很傻比的事情,其實我只要把 [string:anyobject] 改為 [string:any] 就可以了。
這也就是為什麼在第一混編的專案中我花了那麼多時間去修改**了!得益於混編的第二個專案學習了 yep 的思路,是把 [string:anyobject] 命名為乙個叫做 jsondictionary 的型別。所以在 any && anyobect 這個事情上,就花了一點點時間。
這個是我在適配中最蛋疼的坑
首先在看swift-evolution只是了解到@escaping 必須顯示宣告。但是不知道@escaping的閉包,在函式體內無法再修改。
這其實不是乙個 編譯錯誤,但是這個警告最開始讓我有點懵逼.返回值不用難道要我都修改一下?
最開始其實我是這麼修改的 let _ = funtion(),但是後面在看se-0047的時候發現@discardableresult也是可以達到這個效果的。
因為有個專案中使用的 datetools 這個工具。它有乙個 nsdate + tools 的分類。但是在寫 swift 3 的過程中我發現如果變數是 date 型別的無法使用nsdate + tools 這個型別,必須顯示宣告 date as nsdate 這樣才能呼叫分類的一些個方法。這個讓使用 oc 的庫的時候會感覺十分不舒服,畢竟很多 ns 的字首去掉了。所有都顯示宣告太不友好了。
這個其實好像是 xcode 8 的修改。因為之前caanimationdelegate 是乙個分類。大概宣告如下:
之前是在 vc 中只要重寫一下 animationdidstart 函式就可以了。但是新的不行,起初以為是 swift 3 的變化,但是其實是 xcode 8 中的修改。將 caanimationdelegate 變成了乙個協議。我感覺這個修改是為了適配 swift 3 ?變化如下:
因為寬度時間比較長,其他的暫時想不到了。未完待續吧…
swift 3 by 顧 鵬:
適配 swift 3 的一點小經驗和坑 by 圖拉鼎:
總的說來這次遷移沒有想象中的那麼痛苦,雖然提案的改動很大,但是得益於 xcode 8 的遷移工具,這次遷移花費時間不多,當然也有可能和我的**量有關係~
在遷移完之後,再看**,會發現 swift 更加的優雅了,至少相比於 2 來說好了很多,至於好在**?你自己寫寫不就知道了咯。
最後,終於可以把 xocde 7 解除安裝,再也不用擔心兩個一起開無腦閃退了!!!
最後對於明年的 swift 4 只想說 快來吧~分分鐘把你解決!
其實適配之路才剛剛開始,因為 xcode 8 自動轉的**並沒有很好的 swift 3 化。目前只是說在 swift 3 可以編譯通過了而已~
Swift 3 遷移工作總結
寫在前面 背景 量 4萬行 遷移時間 一天左右 準備 在開發最初開發選擇 swift 的時候的很多決策也讓我這次少了很多任務作量。介面用 xib 而不用純 關於第三方庫的選擇 得益於上面兩點,在遷移過程中少了不少工作量。知識儲備公升級 然後把語法文件快速的重溫了一遍。中文版 遷移中的問題 any a...
工作總結3
第一部分 對上 1 關於犯錯 作為乙個領導的話,一般是只關注結果的,會有一定的包容度,但是整體第一次犯錯是正常,第二次犯錯就是減分,第三次犯錯基本就要動搖是否重視你了,幾乎短時間就不會重視了,嚴重了甚至更勝 2 關於風格 喜歡主動思考進取 聽話奉承 務實聽取建議 真誠3 階段適應 對不同情況有他們自...
Swift3遷移至Swift4可能遇到的問題小結
前言 wwdc 2017 帶來了很多驚喜。swift 4 也伴隨著 xcode 9 測試版來到了我們的面前,很多強大的新特性非常值得我們期待在正式專案中去使用它。本文將給大家詳細介紹關於swift3遷移至swift4遇到的問題,下面話不多說了,來一起看程式設計客棧看詳細的介紹吧 問題如下 1.the...