老司機 iOS 週報 #92 | 2019.11.25

老司機iOS週報發表於2019-11-25

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

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

新聞

​Flutter 智慧鬧鐘挑戰賽約你來戰!

@老驢:是不是學了 Flutter 卻無處練手?機會來了!Google 聯合 Google Assistant,聯想,一起搞了這個智慧鬧鐘挑戰賽,用 Flutter 為聯想智慧音響開發一個智慧鬧鐘功能,不僅能讓你練手 Flutter, 更能贏得最高大獎:一臺頂配的 iMac Pro 哦。心動不如行動,趕緊點選連結參與起來!

文章

? ? Command-line argument parsing using Swift Package Manager's SPMUtility module

@looping:本文介紹了通過使用 SPM 的 SPMUtility 模組配合解析終端命令引數,來完成編寫命令列工具的任務。在列舉完基本的命令引數概念和設計規則後,就開始工具編寫實戰,講解過程非常詳細,附帶原始碼,入門教程必備。在文章最後,作者提到了前段時間他自己寫的另一篇文章,Building a CLI tool using Swift and Vapor's Console module,使用這兩個模組都能寫出很好的工具,並且也有各自的設計風格,有寫命令列工具需求的小夥伴可以深入瞭解下。

? Thread Sanitizer explained: Data Races in Swift

@EyreFree:本文通過對併發程式設計中經典的資料競爭(Data Race)問題進行了舉例、分析,由此引入和介紹了 Thread Sanitizer(也稱為 TSan)的使用方法以及它的基本工作原理,並演示瞭如何依靠它來解決文中舉出的資料競爭問題。Thread Sanitizer 是在 Xcode 8 中引入的基於 LLVM 的工具,用於審查 iOS 程式碼中的執行緒問題,能給我們的併發程式設計除錯帶來很大的便利,值得一看。

? ? Flutter 應用效能優化最佳實踐

@CrazyCoderShi:通常來說,Flutter 技術構建的應用程式在預設情況下都是高效能的。所以你只需要避開常見的陷阱,就可以獲得優異的效能,而不需要使用複雜的分析工具對細節做優化. 本文總結了一些 Flutter 應用開發過程中的最佳實踐, 可以有效的幫助你避開一些坑點.

? 自定義WKWebView顯示內容(一)

@J_Knight_:本文作者結合程式碼與 Demo 展示分享了的如何通過 WKContentRuleList 來制定 WKWebView 的內容過濾規則(例如更改 http 請求的 URL 為 https );以及如何通過 WKURLSchemeHandler 來載入相簿中圖片顯示到 WKWebView 中的方案。

? Message-ID and Mail.app Deep Linking on iOS and macOS

@四娘:這周 NSHisper 給我們帶來的是 Deep Linking 相關的內容,講解 iOS / macOS 裡 Mail.app 使用連結跳轉時如何編碼連結資訊,避免資訊洩漏。

? ? iOS Deferred Deep Link

@老峰:Deferred Deep Link 是指使用者開啟一個 Web Page 的時候並沒有安裝對應的 App,希望使用者在安裝 App 以後可以 Deep Link 到對應內容,本文作者介紹了首先介紹了 Deep Link 概念以及其侷限性,然後通過例項給出使用 Firebase Dynamic Links 方式實現 iOS Deferred Deep Link 的過程。

? NSCopying uses in Swift

@極速男孩:和 Objective-C 中一樣,在 Swift 中同樣有 NSCopying 和 NSMutableCopying。本文首先介紹了 NSCopying 的用法和原理。然而在 NSMutableCopying 中,和 Objective-C 不一樣,當你不需要定義一個單獨的 mutable 型別的情況下,在 Swift 中只需要用 let 和 var 就可以了。

? Flutter 中文文件:使用 Mockito 模擬依賴關係

@AidenRao:本篇教程介紹了 Mockito 包的基本用法,模擬 Web 服務或資料庫,根據條件返回特定結果,解決直接依賴 Web 服務或資料庫的以下不便:

  • 訪問線上服務或資料庫會拖慢測試執行效率。
  • 原本可以通過的測試可能會失敗,因為 web 服務或資料庫可能會返回不符合預期的結果。
  • 使用線上 web 服務或資料庫來測試很難覆蓋全所有可能成功或失敗的場景。

工具

? 自動切換輸入法 - Mac

@水水:Mac 上的自動切換輸入法 App, 支援所有常用輸入法,能夠根據當前正在執行的不同的應用程式,自動切換對應的輸入法,免去人工手動切換的麻煩~

程式碼

IBPCollectionViewCompositionalLayout

@張嘉夫:在 WWDC 2019 上 Apple 為 UIKit 增加了一個新的 UICollectionViewCompositionalLayout 類,讓建立複雜的自定義 collection view 佈局變得簡單很多。在 iOS 12 及更早的版本中,我們只能繼承 UICollectionViewLayout 來實現自定義佈局,要重寫很多方法,導致容易出現問題。IBPCollectionViewCompositionalLayout 這個庫讓 iOS 12 及之前的版本也能夠支援 UICollectionViewCompositionalLayout,並且可以使用同一套 API,無需同時維護兩個程式碼庫。

MagazineLayout

@zvving:為 UICollectionView 提供易用的垂直滾動網格和列表佈局。相較於 UICollectionViewFlowLayout,支援多列、高度自適應,Section 自定義背景,Section Header/Footer 跟隨滾動等增強特性。

Airbnb 家出品,在其產品頁面中已廣泛應用,久經考驗,推薦選用。

內推

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

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

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

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

關注我們

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

老司機 iOS 週報 #92 | 2019.11.25

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

說明

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

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

相關文章