老司機 iOS 週報 #113 | 2020-05-18

老司機iOS週報發表於2020-05-18

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

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

新聞

Flutter web 最新進展: 發掘更多可能!

@老驢:Google 又來更新 Flutter Web 的進展啦。在最新的版本中,Flutter 已經提供了 PWA 的支援,也有越來越多的外掛開始提供對 Web 的支援,同時 Flutter 也進一步改進了 Web 的除錯與測試。

雖然 Flutter Web 支援還是處於 beta 階段,但是,Google 正在努力一步一步提升 Flutter 的表現,也希望廣大開發者也能加入進來,一起完善 Flutter Web。

新手推薦

Settings Bundles Management in Xcode

@極速男孩:Settings Bundles 支援開發者在 iOS 設定中加入一些自定義的內容。本文主要介紹瞭如何通過 shell 指令碼來在設定中根據不同的 Configuration 或者不同的 Targets 來加入不同的內容。

文章

? ? TrampolineHook 學習筆記

@五子棋:雖然這個庫是我寫的,但是沒想到竟然有大神這麼詳細的剖析了裡面的每一方面。太讚了,必須推薦。

? ? 超詳解析 Flutter 渲染引擎|業務想創新,不瞭解底層原理怎麼行?

@CrazyCoderShi:小編強烈推薦在用 Flutter 的小夥伴仔細閱讀這篇文章,本文由手淘技術產出,從渲染引擎層面詳細分析了一個控制元件是如何展示到螢幕上的,細緻入微。文末簡要地提了一下,手淘在 Flutter 上的一些探索,也是社群內常提到的把 Flutter 引擎作為小程式的渲染引擎?。

? What’s new in Swift 5.3?

@享耳先森:Swift 5.3 即將釋出,本文給你介紹 Swift 5.3 的新特性,最顯著的兩個就是 多尾隨閉包(Multiple trailing closures) 與 多重異常捕獲(Multi-pattern catch clauses),其餘特性請閱讀原文。

  • 5.3 以前尾隨閉包只能作於最後一個 closure 型別引數,對於有多個 closures 引數的情況,也不建議使用尾隨閉包,Swift 5.3 開始將支援多 closures 引數使用尾隨閉包模式。

  • 以前一條 catch 語句中只能匹配一種 error,5.3 開始將支援多個 error

    do {
        let result = try checkReactorOperational()
        print("Result: \(result)")
    } catch TemperatureError.tooHot, TemperatureError.tooCold {
        print("Shut down the reactor!")
    } catch {
        print("An unknown error occurred.")
    }
    複製程式碼

? Flutter 在 PLUS 業務中的探索和實踐

@looping:本文介紹了京東 PLUS 會員業務團隊入坑 Flutter 的原因,以及當時需要探索和解決的問題調研結論,並且詳盡地描述了 Flutter 在 PLUS 業務中的實踐過程,這對正在研究 Flutter 的同學是一份很好的學習交流資料。

? WKWebView 預設快取策略與 HTTP 快取協議

@含笑飲砒霜:WKWebView 預設快取策略完全遵循 HTTP 快取協議,蘋果並沒有做額外的事情。WKWebView 預設快取策略流程總結如下:

    1. 是否有快取,沒有則直接發起請求,有則進行下一步
    1. 是否每次都得進行資源更新校驗(響應頭是否有 Cache-Control:no-cache 或 Pragma:no-cache 欄位),不需要則進入 3,需要則進入 4)
    1. 快取是否過期(響應頭,Cache-Control:max-age、Expires、Last-Modified 啟發式快取),沒過期則使用快取,不發起請求,過期了則進入 4
    1. 客戶端發起資源更新校驗請求(請求頭,If-Modified-Since: Last-Modified 值、If-None-Match: ETag 值),如果資源沒有更新,伺服器返回 304,客戶端使用快取;如果資源有更新,伺服器返回 200和資源

推薦閱讀: 可能是最被誤用的 HTTP 響應頭之一 Cache-Control: must-revalidate

? The different categories of Swift protocols

@EyreFree:本文作者提供了一種新的 Protocol 分類設計思路,即根據它們所屬的類別來區分它們。概括地說,作者將協議分為四個類別:

  • 動作使能器:使我們能夠對每種符合型別執行統一的操作。它們通常具有以 able 結尾的名稱,例如 Equatable
  • 需求定義:使我們可以將需求形式化為某種物件,例如 SequenceNumericColorProvider
  • 型別轉換:協議用於讓各種型別宣告它們可以轉換為另一種型別,或者可以通過原始值或文字進行表達(例如 CustomStringConvertibleExpressibleByStringLiteral);
  • 抽象介面:充當可以多種型別實現的統一 API,從而使我們可以按需快速替換實現程式碼而無需改動呼叫方程式碼,封裝第三方程式碼或在測試中模擬某些物件。

你是否認可這種分類方式呢?或許看完本文你能夠有自己的看法。

? "零"學習成本:使用 Web 標準開發動態化 Flutter 應用

@邦Ben:該文介紹了阿里的一個 Kraken 專案,該專案核心是用 Web 標準進行開發,Flutter 進行解析渲染。簡而言之就是,HTML -> Flutter Render,基本有也可以理解為小程式的模式,最大的特點就是使用 W3C 標準規範,Web 童鞋入坑成本低。同時也介紹了其配套工具和一些效能特性,但是還沒開源,可以作為一個思路進行參考。

工具

How to add a shield on the App Icon of beta builds

@紅紙:如果你還在煩惱裝了太多測試包,卻不能直觀看出測試包版本/構建資訊的話。不妨嘗試下本文中的這個工具 「Badge」,其允許你在 App 的 Icon 中新增你指定的版本資訊。整合也非常方便,可以通過 Xcode 中的 Run Script Phase 或者通過 Fastlane 中對應的 badge 外掛進行整合。

內推

上海 - 位元組跳動:TikTok iOS/Android/前端/後端工程師

TikTok是目前全球最火爆,國內出海最成功的短視訊App,全球累計下載接近20億次。

目前團隊規模落後於需求增長,非常缺人,經驗不限,應屆生老司機專家都歡迎。

簡歷傳送至 martin.lv@bytedance.com

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

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

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

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

關注我們

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

老司機 iOS 週報 #113 | 2020-05-18

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

說明

? 表示需某工具,? 表示編輯推薦

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

相關文章