老司機 iOS 週報 #95 | 2019-12-16

老司機iOS週報發表於2019-12-16

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

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

新聞

? ? Flutter 1.12 重磅釋出:支援 Web 與 macOS

@CrazyCoderShi:隨著 Flutter Interact 的落幕,Flutter 1.12 穩定版本如期而至,此次不僅完成了成噸的 issues 修復 (關閉了 5303 個 issue,合併了來自 484 個貢獻者的 5950 個 PR),而且帶來諸多新功能和優化.

  • 增加了對 Android App Bundles 和 iOS 13 的支援
  • 改進後的 Add-to-App
  • Dart 2.7 Release
  • Flutter 1.12 的 master、dev 和 beta 頻道都提供了改進的 Web 支援
  • macOS 支援
  • 新版 DartPad
  • Hot UI
  • Layout Explorer
  • ?多裝置除錯
  • 還有更多新功能和社群外掛等你探索...

文章

? ? Lightweight API design in Swift

@zvving

  • 強大、靈活、易用?在 API 設計過程中你更在意哪一點?或者說,該如何把握這三者間的平衡?
  • 面對 Swift 諸多新特性,我們會困惑:都能實現功能,我為什麼要知道這些特性?

本文嘗試通過兩個技術方案的設計變遷,回答上面的問題:(請留意每次設計變遷要解決的問題及其所帶來的優劣)

  1. 協議(強大功能與靈活性) -> 帶參列舉(更加易用) -> Self 為返回型別的靜態方法(摒除 enum 帶來的弊端,更靈活易用)
  2. 陣列引數 -> 可變引數(更易用靈活) -> 提供 group 實現(向後相容)-> 新場景(展示靈活性)

就像文中所說,我們的最初目標是讓 API 更易用,而更易用也能帶來更易組合、靈活性更高的副產品。

事實上, 在實踐過程中,建議首要設計目標定義為(對使用者)易用,其次是(可預期的靈活性),最後才是功能強大。 因為迫於問題領域的業務需要,功能強大是最容易並且一定會達成的目標。

以易用性為目標,要在兩個方向上持續前進:一是在業務領域不斷深入思考問題本質,定義簡明扼要的抽象;二是在『API 設計的工具箱』中選用最合適的工具,在提供強大功能與可預期的靈活性的前提下(記住這是一定可達成的),儘可能提升易用性。

如果僅限於用類和協議抽象,設計時可用的手段將捉襟見肘。你手中『API 設計的工具箱』更豐富,就能有更多手段達成易用的目標。熟練掌握 Swift 語言特性,相信你能設計出更易用的 API。

? 用故事說透 HTTPS

@J_Knight_:本文作者通過漫畫故事的方式介紹了 HTTP 的不安全性,並講解了 HTTPS 的幾個概念:對稱加密、非對稱加密,數字證書以及數字簽名,而且模擬了中間人攻擊的場景,生動形象,易於理解。對 HTTPS 不熟悉的朋友可以閱讀此文幫助理解。

? The Advanced Guide to UserDefaults in Swift

@老峰:本文主要介紹了 UserDefaults 的基礎概念以及內部實現細節,如何使用 Swift5 中 Property Wrapper 和 UserDefaults 實現型別安全的鍵值儲存;如何使用觀察者模式監聽 UserDefaults 的值變化。

? iOS 圖片記憶體優化

@EyreFree:本文介紹了作者對 iOS 平臺上的 HEIF 圖片格式使用過程中的效能問題進行優化的經驗,結合實踐針對 HEIF 圖片載入過程中的記憶體暴漲和 CPU 高佔用原因進行了分析,並給出了自己的解決方案,有遇到類似問題的朋友可以參考。

? Quick tip: clearing your app’s launch screen cache on iOS

@Jimq:iOS 13 Launch screen 的快取機制有所改變,當我們想動態改變 Launch screen 時會發現並不能看到自己想要的效果,作為 Xcode 的資深使用者,我們莫逆於心,使出清快取、重啟真機/模擬器、重啟 Xcode、刪掉 App 的手法,但可能還是不能如願,那麼試試這篇文章裡的方法吧,或許可以緩解痛苦,起碼作者推文(?)下面一夥人是這麼認為的。

? 如何對 iOS 啟動階段耗時進行分析

@五子棋:網上關於 App 啟動優化的文章已經不計其數,但是這篇來自戴銘的文章對啟動優化問題進行了很充分的定義。從問題分析 - 緯度聯絡 - 如何執行 - 優化維持等多個角度對優化所涉及的知識點進行了完整的描繪。同時文章提供了大量資料和工具來幫助大家更好地完成啟動優化,是一篇不可多得的佳作!

工具

Pecker

@張嘉夫pecker 是用來自動查詢無用程式碼的工具,基於 IndexStoreDB and SwiftSyntax,可以檢測無用類、結構體、列舉、協議、函式、別名以及運算子。目前有五種規則,分別是 skip_public, xctest, attributes, xml, comment,可以禁用不需要的規則。

NativeConnect

@anotherenNativeConnect 是一款為 macOS 開發的 App Store Connect 原生桌面工具,相比直接使用遊覽器訪問,它更加快捷。它採用工程化的設計,互動邏輯類似於 Xcode,方便你把專案分享給工作夥伴。目前支援應用後設資料、使用者評論的管理。

程式碼

Diagnostics

@老驢Diagnostics 是一個幫助開發者診斷使用者反饋資訊的庫。它可以快速整合入 App,自動生成郵件格式,新增包含系統日誌在內的附件,甚至可以過濾日誌中的敏感資訊。在大公司的大型專案中,一般都有專門的組來完成這樣的支援,而這樣的開源專案,則可以幫助個人開發者或是小專案,快速輕鬆補全反饋功能。

超甜的 Swift 初始化語法糖 - Then

@水水: Swift 初始化語法糖開源庫,讓你的程式碼更簡潔。實現超簡單,對實現感興趣的朋友可以看看哦~

程式設計師的副業

讓我們來探索一下 Coding 以外的世界,看看程式設計師除了在 996 之後還會在做點什麼?

團隊成員 @J_Knight_ 從去年年末開始了自己的股票和基金的投資之旅,用部分的業餘時間學習投資理財方面的知識,從今年年初到現在的股票收益超過40%,基金收益超過20%;並在今年下半年開設了個人投資理財公眾號「複利維他命」:該公眾號主要分享理財,股票和基金投資的相關知識和實戰經驗,以及相關書籍的讀書筆記。

老司機 iOS 週報 #95 | 2019-12-16

在這裡分享他在上個月釋出的一篇文章: 我為什麼把投資作為自己的一項興趣愛好。這篇文章總結了他在這一年之內投資股票和基金的心得和體會,以及為什麼把投資理財作為了自己的一項興趣愛好的原因。本文對還沒有開始投資股票和基金的朋友會有一些啟發;對已經開始投資股票和基金的朋友可能也會有一定的借鑑意義。

內推

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

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

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

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

關注我們

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

老司機 iOS 週報 #95 | 2019-12-16

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

說明

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

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

相關文章