老司機 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
- 強大、靈活、易用?在 API 設計過程中你更在意哪一點?或者說,該如何把握這三者間的平衡?
- 面對 Swift 諸多新特性,我們會困惑:都能實現功能,我為什麼要知道這些特性?
本文嘗試通過兩個技術方案的設計變遷,回答上面的問題:(請留意每次設計變遷要解決的問題及其所帶來的優劣)
- 協議(強大功能與靈活性) -> 帶參列舉(更加易用) -> Self 為返回型別的靜態方法(摒除 enum 帶來的弊端,更靈活易用)
- 陣列引數 -> 可變引數(更易用靈活) -> 提供 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
@anotheren:NativeConnect
是一款為 macOS 開發的 App Store Connect 原生桌面工具,相比直接使用遊覽器訪問,它更加快捷。它採用工程化的設計,互動邏輯類似於 Xcode,方便你把專案分享給工作夥伴。目前支援應用後設資料、使用者評論的管理。
程式碼
Diagnostics
@老驢:Diagnostics
是一個幫助開發者診斷使用者反饋資訊的庫。它可以快速整合入 App,自動生成郵件格式,新增包含系統日誌在內的附件,甚至可以過濾日誌中的敏感資訊。在大公司的大型專案中,一般都有專門的組來完成這樣的支援,而這樣的開源專案,則可以幫助個人開發者或是小專案,快速輕鬆補全反饋功能。
超甜的 Swift 初始化語法糖 - Then
@水水: Swift 初始化語法糖開源庫,讓你的程式碼更簡潔。實現超簡單,對實現感興趣的朋友可以看看哦~
程式設計師的副業
讓我們來探索一下 Coding 以外的世界,看看程式設計師除了在 996 之後還會在做點什麼?
團隊成員 @J_Knight_ 從去年年末開始了自己的股票和基金的投資之旅,用部分的業餘時間學習投資理財方面的知識,從今年年初到現在的股票收益超過40%,基金收益超過20%;並在今年下半年開設了個人投資理財公眾號「複利維他命」:該公眾號主要分享理財,股票和基金投資的相關知識和實戰經驗,以及相關書籍的讀書筆記。
在這裡分享他在上個月釋出的一篇文章: 我為什麼把投資作為自己的一項興趣愛好。這篇文章總結了他在這一年之內投資股票和基金的心得和體會,以及為什麼把投資理財作為了自己的一項興趣愛好的原因。本文對還沒有開始投資股票和基金的朋友會有一些啟發;對已經開始投資股票和基金的朋友可能也會有一定的借鑑意義。
內推
老司機週報團隊聯合知識小集和 SwiftGG 翻譯組收錄了一份靠譜的內推職位。
如果你想找工作,點這裡:www.yuque.com/iosalliance…
如果你想招人,點這裡:www.yuque.com/iosalliance…
當然,也歡迎你關注我們每一期的週報,我們會在每期週報底部及時更新編輯內推崗位。
關注我們
我們開通了公眾號,每期釋出時公眾號(OldDriverWeekly)會推送訊息,歡迎關注。
同時也支援了 RSS 訂閱:github.com/SwiftOldDri… 。
說明
? 表示需翻牆,? 表示編輯推薦
預計閱讀時間:? 很快就能讀完(1 - 10 mins);? 中等 (10 - 20 mins);? 慢(20+ mins)