老司機 iOS 週報 #23 | 2018-06-18

老司機iOS週報發表於2018-06-19

上一週在掘金的支援下,我們聯合“知識小集”、SwiftGG 針對 WWDC 18 一共完成了 28 篇技術文章。希望廣大的開發者多多轉發,不要錯過:老司機x知識小集xSwiftGG WWDC 18 專題目錄

新聞

? FB正在大規模重構React Native,預計今年釋出

這毫無疑問是個好訊息,和原生程式碼的協同一直是 React Native 的一個痛點,Facebook 願意親自解決這個問題,這對 RN 生態的超級利好。業內一些公司選擇 Weex 而不選擇 RN 的原因就是因為 Weex 和 Native 之間互動更加方便,這樣可以最大限度的複用自己積累的 Native code base(畢竟目前 iOS 業內沒多少新專案, 大部分都是有一定歷史包袱)。如果 RN 解決了這個問題想必會給 Weex 帶來新的壓力。

文章

? ? Enumerating enum cases in Swift

本文介紹了 Swift 4.2 新引入了 CaseIterable 協議。因為 Enum 會自動實現 CaseIterable 的方法,所以作者先介紹了 CaseIterable 協議中 allCases 方法在 Enum 上的幾種使用場景,其中就包括了在 TableView 上的使用。然後作者詳細講解了如何讓其他型別去實現 CaseIterable 協議。這是 Swift 4.2 非常重要的一個新增項,值得關注!

? iOS 流量監控分析

在移動開發早期,流量監控一直是 APM 裡很重要的部分。但隨著 WiFi 覆蓋率的提高以及流量資費的下降,客戶端的流量監控漸漸顯得不是那麼重要了。餓了麼基於自己的業務場景需要,分析比較了圈內各大已知 APM 流量監控方案的優缺點,最終實現了自己的流量監控模組。該文章對於加深理解 iOS 客戶端內 HTTP 請求流程是很有幫助的。

? SR-7380, Ambiguous KeyPath

作者是 GitHub 和 Apple 的前員工。

作者在編碼過程中發現 Swift KeyPath 的一個 bug,從定位和修復問題的過程非常清晰,值得一看。

Swfit 的編譯前端是 swiftc(為什麼不是 Clang ? 參考 www.youtube.com/watch?v=Ntj…) 文章寫了如何給編譯器加引數讓其列印出更多資訊、如何生成 AST(抽象語法樹)語義分析如何做型別檢查等。

關於 Swift 編譯過程,可參考 向開源的 Swift 貢獻程式碼

? WWDC 中提到的瀏覽器 Fingerprinting 有多可怕?

Web 瀏覽器上的 fingerprinting 技術指通過 IP 地址、JavaScript 行為、Flash 與 Java 外掛、字型、Canvas、WebGL 等多維度資訊,來給每一個瀏覽器打上一個不同的 fingerprint。你修改瀏覽器的常見配置,fingerprint 往往並不會發生改變,而你換一臺電腦,或者換一個瀏覽器,都會產生不同的 fingerprint。通過這項技術,就能給一個執行在某個 OS 平臺上的瀏覽器打上唯一標識,識別 Cookie 洩露產生的使用者偽裝,不過目前 fingerprinting 被廣泛用於在不同的網頁上識別使用者,去投放合適的廣告。

? ? iOS 12: Notable UIKit Additions

作者 Jordan Morgan 每年 WWDC 之後都會深入探索新版本的 iOS 併為大家帶來 UIKit 新增的 API,這次包括用於提示密碼的 UITextInputTraits、用於影象渲染的 UIGraphicsImageRenderer、自動填充驗證碼、通知設定等等值得花時間研究的新 API。

?Training a Text Classifier with Create ML and the Natural Language Framework

CreateML 是今年 WWDC 蘋果釋出的新的深度學習訓練工具,允許開發人員在不太瞭解機器學習的情況下,便可以訓練自己的 models。本文作者 Mattt 在很短的時間,只寫了很少的程式碼,就通過 CreateML 訓練了一個文字分類的 Model,可見 CreateML 在使用上的簡單和迅速。我一直認為機器學習慢慢一定會隨著各種工具,框架的出現,變得越來越簡單,可以讓更廣大的開發人員使用。雖然 CreateML(目前 CreateML 還是 Beta 版本)還不能完全代替諸如 TensorFlow 這樣的框架,但我認為這是一個很好的開始。

?MessageThrottle Performance Benchmark and Optimization

MessageThrottle 是 OC 訊息節流和防抖的庫,換句話說就是控制方法呼叫的頻率,主要利用 OC 的 runtime 機制來實現。由於 Hook 訊息轉發流程帶來了一定的效能損耗。作者在原有基礎上,通過改進儲存結構和快取策略,對庫的效能進行了優化,使得訊息轉發流程的耗時下降 50%,同時節省 6% 的 CPU 耗時,並加強了執行緒安全。建議讀者在讀這篇文章前,如果對這個庫或者 runtime 機制不是太熟悉的,可以先看一下 MessageThrottle 這個庫的實現細節。

? When your CA turns against you

目前主流的網站基本都採用了 HTTPS,而證照都是通過 CA 頒發。TSL 證照主要有三種型別,分別為 DV、OV 以及 EV。其中,EV 是最貴的。而我們知道,CA 總是想引導我們購買更貴的證照,但從安全性而言,它們三個其實並沒有多大區別(當然,本文重點不在介紹 EV,主要是證照釋出後的問題)。CA 不僅可以頒發證照,還具有撤銷證照的權利。本文以實際的案例,Ian Carroll 在美國註冊的一家名為 Stripe Inc. 的公司被 CA 撤銷了證照,來討論 CA 的權利是否過大,是否存在濫用職權的問題。

? WWDC 2018 見聞

Bang 參加 WWDC 2018 的見聞,不僅僅提到了 WWDC 中,大家在最近幾周看過很多相關文章的 WWDC Session ,還提到了 WWDC Lab 這個現場與蘋果開發者,全世界開發者交流探討的環節,另外 Bang 作為 JSPatch 的作者,也向蘋果詢問了官方對這類工具,這類熱修復,熱更新的態度,蘋果的回答也頗有意味。

? [譯]現代 js 框架存在的根本原因

作者從資料狀態與UI響應的方向集中闡述了在傳統前端開發模式下帶來的痛點,因此而產生了現在諸如 React,Angular 或 Vue 等現代 js 框架。在文章中提到此類框架的基本策略是通過虛擬dom來高效操作渲染,使用觀察者監聽來即時響應狀態變化。作者為了大家理解方便,用原生 js 與虛擬 dom,實現了一個響應式 UI 框架的基本流程。

? Harnessing Code Generation to Increase Reliability & Productivity on iOS at Uber

本文的中心是利用程式碼自動生成能力提高 Uber iOS 上的可靠性和生產力。主要通過資源訪問器(Resource accessors)和模擬(Mocks)兩個例子來介紹程式碼自動生成能力如何提高程式碼可靠性和生產力。

? Modular iOS

下面四篇文章是一個系列文章,主要描述了「如何將我們的專案進行模組化拆分」

上述四篇文章篇幅不大,但是每篇文章都對模組化過程中產生的問題提供了一個很好的思路,對於正在寫模組化的你們來說,值得都看一遍。

細說 Swift 4.2 新特性:Dynamic Member Lookup

Swift 4.2 中新增加的 dynamic member lookup 對 swift 未來的動態特性有著很大的影響。同時也增強了和動態語言如 python 和 js 的互動。是個值得關注的新特性。

設計

【國內首發 + 中國價】Design+Code 絕佳 iOS 設計和開發教程一年訂閱

Design+Code 系列教程教你從 0 到 1 設計、開發一款完整的 iOS app,非常適合希望入門設計或程式設計的朋友,包括 Sketch、Swift 4、Xcode 9、CocoaPods、Core Data、Realm、動畫、SpriteKit、TestFlight、釋出 App 到 App Store 等等內容,不僅有文字教程,還有超過 40 小時的視訊課程以及 10GB 可供下載的資原始檔。

工具

Mac Bootstrap

這是一個針對新 Mac 開發的,快速配置開發環境的指令碼,裡面整合了一些常用的配置。所有的配置和功能都有文件說明, 它既是使用手冊,也是教學指南。

雖然環境配置是一件非常主觀的事,不同的人審美和需求不一樣,但也可以看看文件,瞭解一些好玩的用法,看看它是怎麼實現的,然後把部分函式抄走並提高自己的工作效率。

Sonar

Facebook 出品,一個可擴充套件的移動應用除錯工具,同時支援 iOS 及 Android,讓你能夠從桌面視覺化地控制你的應用。Sonar 基於外掛化設計,已經內建了 Logs (日誌)、Layout Inspector (佈局檢查器)、Network (網路檢查器)。當然,你也可以自己為其編寫外掛來滿足自身業務需求。不過當前還沒有支援 Swift,專案中全面使用 Swift 的同學還得再等等。

線上 AI 生成 LOGO

相信每位開發者都有會自己做的應用卻不會自己做 Logo 的窘境,也更不希望和不靠譜的收費設計師來回扯皮,那麼快讓這款 AI 工具來幫助你。輸入名稱、標語、關鍵詞並選擇配色方案,然後等待數秒,就會得到若干個基於你配置的設計結果,總有一款適合你。

音視訊

Swift Unwrapped #62: Interview with Ted Kremenek

這期 Swift Unwrapped 採訪了 Swift 的核心團隊負責人 Ted,主要講了 Swift ABI 相關的內容,很大的篇幅都在討論 ABI 穩定的概念以及影響,例如 ABI / API / Module Stability 的概念和區別,Swift Runtime 跟系統的互動,以及 Swift 穩定對於作業系統 SDK 開發的影響。

內推

位元組跳動 北京 iOS 團隊持續招人中

這是一家非常年輕的創業公司,充滿活力與激情,只招優秀的人,一起做有挑戰的事情。直接內推可以將簡歷及心儀崗位傳送至我的郵箱 raozhizhen@bytedance.com,或者新增我的微信 jingmu1994 瞭解更多公司資訊。有需要的我也可以直接幫你對接技術 Leader 詳聊。

深圳頭條研發中心誠招各路 iOS 好手一起做取悅自己的專案

如想了解更多深圳頭條的資訊,可以加小T微信:tomtan,切磋技術和聊情懷都可以喔~~~~

杭州/廣州/深圳 奇志科技招聘 iOS、前端

奇志科技自 2016 年起通過行業無人機協同工作流 Mesh 進入物聯網與人工智慧領域, 併成功為房地產、建築、測繪、電力巡檢等行業提供無人機解決方案。Mesh 在運用 yarn, rollup, vue 等技術棧的同時,利用 Couchbase 設計多端資料同步方案,並深入研究 React Native。也可以微博上私信 @沒故事的卓同學 瞭解。

關注我們

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

老司機 iOS 週報 #23 | 2018-06-18

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

本期編輯

@沒故事的卓同學@四娘@mmoaay@享耳先森@EyreFree@Damonwong@折騰範兒_味精@張嘉夫@AidenRao@Parsifal@葉孤城@aaaron7@方秋枋,@Kyo

說明

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

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

相關文章