老司機 iOS 週報 #101 | 2020-02-17

老司機iOS週報發表於2020-02-17

老司機 iOS 週報,只為你呈現有價值的資訊。

你也可以為這個專案出一份力,如果發現有價值的資訊、文章、工具等可以到 Issues 裡提給我們,我們會盡快處理。記得寫上推薦的理由哦。有建議和意見也歡迎到 Issues 提出。

新聞

? On the road to Swift 6

@xiaofei86:Swift 官方釋出 Swift 6 未來方向:

  1. 加速 Swift 生態發展
  2. 優化開發體驗(Compiler,Debugger,IDE 等工具)
  3. 朝著為開發者賦能的語言前進(語言功能層面)

為此,將沿用 SSWG 的方式,在各個領域設立各自的工作組進行開發,並且 Core Team 也將進行人員調整,引入各個工作組的核心負責人。

Swift 6 目前有兩個目標:

  1. 加強併發的功能支援
  2. 繼續沿著 Ownership Manifesto 的計劃推進,優化記憶體模型

這一次 Swift 6 不會有具體的時間安排,只會按照功能去公開各自的開發進度和時間表,當這些目標全都完成時就會 release Swift 6,在目標完成之前都只會按照週期 release Swift 5.x 版本。

新手推薦

? SwiftUI-官方教程翻譯

@zvving:SwiftUI 已經公佈半年了,開始逐漸有大批開發者嘗試學習和使用。此專案翻譯了共十篇官方的 SwiftUI 教程,在保留官方的文字內容、配圖、程式碼外,還進行了細微的優化,推薦 Swift 新手參考。

推薦人:@Willie

文章

? ? 一次讓重新整理控制元件好玩起來的嘗試

@zvving:相信你也有過『手裡拿著錘子,看什麼都像釘子』的經歷。

從學會 SpriteKit 能用在哪裡?到下拉重新整理遊戲化『一本正經』的可行性分析,再到具體的程式碼實現。作者在創造需求的同時,提供了『嚴謹思考,細心實現』的樣本。

看完本文,會讓人手癢,也想學些新技術,再找個場景用起來。

? Library Evolution in Swift

@老驢:Swift 編譯器組的 Slava Pestov 在 Swift 官方網站上寫了一篇關於 Swift 5.1 中 binary stability 相關的介紹。

在 Swift 5.1 中,Swift 引入了兩項新功能:Module stability 和 Library evolution。前者可以讓不同版本編譯器編譯的 Swift Module 同時在一個 App 中執行,而後者,則可讓 binary framework 開發者在不影響老版本相容性的同時新增新功能。

本文中,Slava 用了一些例子來介紹其中兩個比較常用的 attribute:@inlinable@frozen。 如果你在開發一些 framework 的話,不妨來讀一讀這篇文章。

?? 淘系專家帶你初探端智慧與MNN

上篇

下篇

@蓮叔:MNN 的文章之前也陸續推薦過一些,不過比較偏技術細節。本次推薦的兩篇相對來說更加 general 一些。從為什麼要做端智慧聊到為什麼要用MNN。上篇側重於講解了為什麼端上 AI 是未來的發展方向,同時對於端智慧面臨的挑戰和未來的發展趨勢做了一些總結。下篇則主要分享了 MNN 的優勢以及工作流程。兩篇文章適合對於端智慧持觀望態度的研發同學參考,對於已經入坑的,參考價值不大。

?? Static and Dynamic Callable Types in Swift

@JimQ:上週 Xcode 11.4 第一個 beta 版給我們帶來了大量有價值的更新,其中包括 Swift 比較受關注的兩個新語法:作為函式的 key path 表示式callAsFunction 。作者通過提供一些歷史和理論背景,來幫助我們認識到新語法的真正價值點,以及 Swift 怎麼把靜態、動態可呼叫型別的版圖一步步拼起來的。對於 Swift 不斷併入的新提案導致“含糖量”逐漸增加的問題,作者也發出了“廬山不識真面目,只緣身在此山中”式的無奈之慨。

? WatchKit渲染原理以及SwiftUI橋接

Apple Watch 從釋出以來,經過幾次更新換代,目前已經成為市面上最受歡迎的可穿戴裝置。Swift UI 是去年蘋果新推出的 UI 相關框架。雖然 WatchKit 推出已經有一段時間了,但是相信多數同學並沒有開發 Watch App 的經歷,所以這兩個對很多人相對陌生的技術如何結合開發,相信很多人對此會有興趣。本文不僅介紹了 WatchKit 的渲染原理,還介紹瞭如何與 SwiftUI 進行橋接,值得好好了解下。

工具

ControlRoom

基於 simctl,讓你可以通過 GUI 來便捷地控制模擬器,例如傳送推送通知,切換夜間模式等。

Sitrep

Sitrep 是 Swift 的原始碼分析工具,為你提供程式碼的高階分析:

  • 你的類,結構體,列舉,協議和擴充套件的數量。
  • 總程式碼行數,以及原始碼行數(減去註釋和空格)。
  • 列出最長行數檔案,以及它們的原始碼行數。
  • 哪些內容被 import 以及 import 的頻率。
  • 你的專案中有多少個 UIView,UIViewControllers 和 SwiftUI 檢視。

程式碼

? ? MLN —— 支援熱更的移動跨平臺解決方案

@CrazyCoderShi:MLN 是陌陌技術團隊開源的移動跨平臺開發框架,因其較低的學習成本、較高的人員效率、良好的效能、支援線上熱更新等優勢,目前在陌陌 App 中已全面替換 Weex,成為唯一在用的跨平臺方案,並廣泛應用於多種業務場景. MLN 優點良多:

  • 包體積小,載入速度快,流暢度高(對比 Flutter/RN/Weex )
  • 開發除錯支援熱過載,提升開發除錯體驗,節約時間成本
  • 支援熱更新,通過網路下載lua離線包即可實現熱更新
  • 提升開發效率,一套程式碼適應 Android 和 iOS 兩端

音視訊

?? iPlayground 2019 | 網路難,難於上青天 - 用部件化的方式簡化網路程式設計

@老峰: 視訊是 瞄神 在 iPlayground 2019 的演講,分享了 Line SDK 關於網路層的單一職責設計架構思路, 有興趣的同學可以點這裡看原始碼

內推

老司機週報團隊聯合知識小集和 SwiftGG 翻譯組收錄了一份靠譜的內推職位。

如果你想找工作,點這裡:www.yuque.com/iosalliance…

如果你想招人,點這裡:www.yuque.com/iosalliance…

當然,也歡迎你關注我們每一期的週報,我們會在每期週報底部及時更新編輯內推崗位。

關注我們

我們開通了公眾號,每期釋出時公眾號(OldDriverWeekly)會推送訊息,歡迎關注。

老司機 iOS 週報 #101 | 2020-02-17

同時也支援了 RSS 訂閱:github.com/SwiftOldDri…

說明

? 表示需翻牆,? 表示編輯推薦

預計閱讀時間:? 很快就能讀完(1 - 10 mins);? 中等 (10 - 20 mins);? 慢(20+ mins)

相關文章