老司機 iOS 週報 #30 | 2018-08-06

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

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

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

新聞

新變化不多,但最新的 iOS 12 「劇透」了今年可能釋出的新硬體 | 具透

在 iOS 12 的第四個公開測試版中,蘋果可透露了不少新硬體的資訊:比如支援雙卡雙待的 iPhone;支援 Face ID 的 iPad;支援無線充電的 AirPods 充電盒;以及 HomePod 將支援打電話。其他軟體方面的改動也不少,具體還是仔細看看原文。當然,如果你問我自己能否瞧瞧韌體裡的祕密,IDAHopper 瞭解一下。

文章

? Swift 4 弱引用實現

原文作者 Mike Ash,是知名部落格 Friday Q&A 作者,現在是 Swift 團隊一員。

2015 年的時候 Mike Ash 就已經介紹過 Swift 弱引用的實現了,這次 Swift 4.0 的物件記憶體佈局做了一些調整,加入了 side table 去存放額外的物件資訊,改變了弱引用的實現。文章還對 Objective-C 和 Swift 4 之前的舊實現做了對比分析。

? 如何在幾十個 Repo 中游刃有餘

本文對“研發效率”這個話題進行了非常深入的討論,平時我們為了提升研發效率,會開發一些腳手架,工程模板等,但大多數時候都不會有量化指標去衡量,秉承“不談目標的優化都是耍流氓”的原則,作者提出了一系列衡量專案迭代和釋出時間的指標,來幫助衡量優化的目標。除此之外,還探討了在複雜系統開發中保持高效開發的經驗,很有價值。專注研發效能、工程架構的同學可以重點參考。

另外,作者陳天也是我很喜歡的程式設計師,經常會發表一些質量很高的技術文章,推薦大家關注他的公眾號。

? MessageThrottle Safety

MessageThrottle 是作者玉令天下開發的 Objective-C 節流限頻元件,其原理基於 Hook 訊息轉發流程,在執行時應用了一套節流限頻的規則。本文介紹了新版本中對於 hook 流程、多執行緒操作、規則管理的安全性實現細節。 本文是關於 MessageThrottle 的第四篇文章。前三篇如下:

? Structuring Swift code

隨著時間的流逝,幾乎所有的 app 和框架都會變得更大、更復雜,所以維持一個穩定的、一致的架構就變得非常關鍵。這篇文章介紹了提升 Swift 專案架構的幾個小技巧,包括"三個原則"(如果有三個相同型別的類、資料夾或檔案,就將它們組合起來)、根據功能來組織架構的原則以及"偵查原則"(在改動程式碼庫的時候時刻讓檔案處於更容易找到的位置)。

? Flutter 的編譯模式

Flutter 在 Google I/O 之後也算是火了一把,雖然之後能不能繼續火下去也還是個未知,但是能多學習瞭解新東西總是有益無害。

螞蟻金服的 stephenwzl 在自己的微信公眾號寫了一系列關於 Flutter 基礎知識的文章,對於還在學習 Flutter 的人來說,比較有學習價值。

本文介紹了 Flutter 編譯中的一些基本概念,闡釋了基本的編譯過程和不同平臺上的區別。除了這篇文章,還可以參考學習一下他的其他文章。

? Migrating an Objective-C class to Swift: a piecemeal approach

隨著 Swift 越來越普及,很多人都會面臨如何將 Swift 與已有的 OC 程式碼相結合的問題。對於一個已有的 OC 類,如果我們無法馬上把它完全用 Swift 來重寫,但是又想用 Swift 為它擴充套件功能,特別是新增不相容於 OC 的儲存屬性(如帶泛型的列舉型別),我們是無法把這個屬性直接加到 OC 類定義裡的。作者巧妙地做了一層簡單的封裝,輕鬆繞過了這個限制,相信對大家處理類似問題會有啟發。

? Never

Never 是 Swift 標準庫中一個很特別的型別。在 SE-0102 中提出用 Never 去代替 @noreturn。在文中 Mattt 先介紹了 Never 這個特殊的型別是什麼,緊接著以 Result<Value, Error: Swift.Error> 為例介紹了一個 Never 用於解決不可能發生的場景的實際應用的妙處。最後在文章的末尾,Mattt 還寫了一些對未來的 Swift 中 Never 可以以一個 Bottom Type 的角色去實現更多的功能的期待。

? JSON Web Token 入門教程

JSON Web Token(縮寫 JWT)是目前最流行的跨域認證解決方案,本文主要是介紹它的原理和用法。

對於使用者認證來說,使用者的 session 資料如果存在服務端,那對於伺服器叢集,或者是跨域的服務導向架構。session 資料的共享,會是一個比較麻煩的問題。 JWT 方案則是將不可篡改的 session 資料儲存到客戶端,每次請求再將 session 資料發回給服務端進行使用者認證。不同伺服器之間,不再需要進行 session 資料共享,比較容易實現擴充套件。

? Scrollable UIStackView

對 UIScrollView 進行自動佈局(Auto Layout)時需要設定兩套約束,分別是 frame 和 content。設定 frame 很簡單,跟普通的 view 操作一樣;但是 content 就比較特殊了,自動佈局引擎會通過子檢視的大小自動調整 content,所以加到 UIScrollView 裡的檢視必須是已經指定大小或者能自動計算大小(intrinsic content size)的。

本文主要解釋了把 UIStackView 加到 UIScrollView 進行自動佈局時出現的一些棘手的問題,並實現了一個可滾動的高度自適應的 StackView。相信大家看完後,對如何使用自動佈局處理滾動檢視會有一個比較清晰的認識。

程式碼

PerfectAccelerators - 加速 Perfect Server Side Swift 開發

上期我們推薦了篇文章介紹 Perfect 開發體驗,這次,給大家推薦一組 Perfect 封裝庫,可以幫助 Perfect 加速 Server Side Swift 開發。

音視訊

ADDC 2018

ADDC 是 2018 年 7 月 4 日至 6 日在西班牙巴塞羅那舉辦的 App 設計師和開發者大會,這個大會的目的是給設計師和開發者提供一個開放的、包容的、合作的空間,讓他們在一起碰撞想法,找到新的合作方式。ADDC 請到的嘉賓都是移動 app 領域的頂級開發者和設計師,這個 YouTube 頻道收錄了他們精彩的、具有啟發性的演講。

內推

北京-拉勾網招聘 iOS 工程師

拉勾團隊目前需要一枚 iOS 大牛,負責公司核心產品功能的開發和維護。

北京-螞蟻金服 招iOS/安卓/前端開發

螞蟻金服招聘,負責支付寶會員及帳號業務線,地點北京國貿,金臺夕照地鐵站出口 100 米。雖然招聘連結只給了 iOS 的 JD,但前端/安卓/iOS 都要,要求相近。有興趣的同學歡迎將簡歷傳送到:weijing.wdf@alibaba-inc.com / weijing.wdf@antfin.com (同一個郵箱) 或這微博私信 @折騰範兒_味精 瞭解情況。

編輯內推

關注我們

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

老司機 iOS 週報 #30 | 2018-08-06

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

本期編輯

@沒故事的卓同學@四娘@享耳先森@Damonwong@折騰範兒_味精@張嘉夫@AidenRao@Parsifal@aaaron7@方秋枋tom510230anotheren水水looping@JasonYuh@老老老老老老老驢

說明

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

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

相關文章