老司機 iOS 週報,只為你呈現有價值的資訊。
你也可以為這個專案出一份力,如果發現有價值的資訊、文章、工具等可以到 Issues 裡提給我們,我們會盡快處理。記得寫上推薦的理由哦。有建議和意見也歡迎到 Issues 提出。
新聞
? WWDC20 改成線上舉行
@享耳先森:受新冠疫情影響,蘋果宣佈一年一度的 WWDC 大會改為線上舉行,具體日期及形式還未定,只指明將在六月舉行。
新手推薦
? ? UIAlertController with Function Builders
@AidenRao:Function Builder 是 Swift 5.1 的新特性,在 Swift 的基礎上構建自己的 DSL 的語法。文章基於 Function Builder,建立簡單且易讀的 UIAlertController API,包括基礎的 Function Builder 實踐,條件語法,以及通過建立一個輔助函式,在 Function Builder 中實現 for 迴圈。
文章
? 打破重重阻礙,Flutter 和 Web 生態如何對接?
@CrazyCoderShi:Flutter 在 2019 幾乎已經成為了跨端開發的代名詞了,其中其官方團隊在下半年宣佈的 Flutter Web 更是讓其火熱的勢頭更進一步,讓大家看到了一個大統一的遠景。本文是手淘技術對 Flutter 對接 Web 的一個深度解析,從 what,why,how 三方面娓娓道來,最終結論: 不要對接!不要對接!不要對接!
? ? Fluttify
系列文章:
- Flutter 外掛開發必備 原生 SDK -> Dart 介面生成引擎
Fluttify
介紹 - 如何利用 Fluttify 開發一個新的 Flutter 外掛
- Fluttify 輸出 Flutter 外掛工程詳解
- Fluttify 編譯器原理介紹
@紅紙:Fluttify 是一個可以為原生 SDK 生成 Dart 介面的一個工具。工具解決了一些外掛開發過程中帶來的型別安全,編碼繁瑣等痛點。主要原理通過語法解析生成器 ANTLR 產生樹狀分析器解析出 JSON 格式的中間檔案,再利用中間檔案和工程模板生成對應的 Dart 介面以及目標工程。
如果你對於 ANTRL 想了解更多推薦:JSPatch Convertor 實現原理詳解和從 antlr 扯淡到一點點編譯原理
推薦人:@yohom
? Testing Push Notification on iOS Simulator from Xcode 11.4 Beta
@J_Knight_:從 Xcode 的 11.4 beta 版本開始支援在 iOS 模擬器推送。作者介紹了兩種方式來實現在 iOS 模擬器的推送:
- 使用命令列:
xcrun simctl push booted test_push_notification.apns
- 通過拖拽 apns 檔案到模擬器的方式來實現推送。
通過以上兩種方式,開發者不需要使用真機,也不需要推送證書,更不需要使用 APNS 服務就可以實現推送,非常方便。
? Flight rules for Git
@JimQ:這是一篇 Git 急救指南,所謂"飛行規則",即用來指導問題出現後的應對之法。不像官方指南以羅列功能為主,本指南多以常見問題為小標題,然後給出該問題的具體解決步驟,非常適合就病投醫,對症下藥,且有中文版本。
? Introducing Swift Crypto
@EyreFree:Swift Crypto 是一個新的 Swift 系統庫,它對 Apple CryptoKit 的 API 進行了出色的封裝。這個新的庫提供了跨平臺的解決方案,無論部署在什麼平臺上,Swift 開發人員都可以訪問這些 API,以實現一系列通用的加密操作。只需要 import Crypto
就可以獲取所有 CryptoKit API,在編寫跨平臺加密程式碼時非常有用。本文對該庫進行了簡單介紹,感興趣的朋友可以瞭解一下。
? ? The Nested Closure Trap
@Satanwoo:Block / Closure 導致的迴圈引用想必大家在日常在開發中已經有了很深的體會。作者從 Swift 巢狀的閉包入手,提及了在多層巢狀中可能出現的記憶體洩漏場景。感興趣的朋友可以用作一個補充知識漏洞的文章,時刻提示自己。
? 設計模式(Swift 5.0 實現)
全面的 Swift 5.0 示例實現的設計模式,結合概念理論與程式碼示例可以更好地理解設計模式的實際應用。源專案為英文,此為中文整理翻譯版本。
? 使用 protocol 和 callAsFunction 改進 Delegate
@老驢:喵神的新作。這篇文章也是之前喵神的小專欄的文章的後續。
本文主要是通過 Swift 5.2 中最近新加的特性來完善之前的 Delegate Pattern 方案。有興趣的同學不妨新老兩篇文章一起讀哦。
工具
CocoaHub
@xuyanlan:挺不錯的一個 iOS 資訊 App,而且僅看 Feed 簡介的話不用翻牆哦,CocoaHub 下載連結。
程式碼
? SwiftCurrency: Type-safety and algorithms for working with money in Swift.
@極速男孩:Swift Currency 是一個在 Swift 中來表達 ISO 4217 的一個貨幣的庫。這個庫是一個型別安全的,並支援文字表達,文字插入和數學表示式等對貨幣的操作。
? Time: Building a better date/time library for Swift
@蓮叔:做過時間管理、日曆等 App 的同學一般都會有一個同感,即系統提供的日期相關的 API 著事不怎麼友好,尤其是涉及到時區的考慮,往往都非常容易採坑。Time 是一個純 Swift 實現的日期 API 集合,提供了 SwiftPM 的方式接入。提供了一種“講人話”的方式來操作日期和時間,比如可以簡單的針對不同的時區生成 clock 物件,並能夠輕而易舉的從 clock 物件中拿到年月日,時分秒等資訊。不用寫很多 boilerplate code。有相關需求的同學可以嘗試一下。
YMHTTP
@張嘉夫:YMHTTP
是一個適用於 iOS 平臺,基於 libcurl 的 IO 多路複用 HTTP 框架,其 API 設計和行為與 NSURLSession 保持高度一致。因為 YMHTTP 是基於 libcurl 進行封裝,所以有著較高的定製性,目前的版本與 NSURLSession 在 API 保持高度一致的同時擴充了 DNS 的能力(包括 SNI 的場景)。
Swift Argument Parser
@xiaofei86:近日蘋果開源了由 Swift 實現的 ArgumentParser。它用於解析命令列引數,具有直觀、易用、簡潔、安全的特點,是一個很出色的解析器。目前 ArgumentParser 的 star 數已達 1k。蘋果還推薦了兩個 ArgumentParser 在 Swift 專案工具中採用的示例:
- indexstore-db:一個包含兩個命令的簡單實用程式。
- swift-format:使用了一些高階功能,例如自定義選項值和隱藏標誌。
內推
老司機週報團隊聯合知識小集和 SwiftGG 翻譯組收錄了一份靠譜的內推職位。
如果你想找工作,點這裡:www.yuque.com/iosalliance…
如果你想招人,點這裡:www.yuque.com/iosalliance…
當然,也歡迎你關注我們每一期的週報,我們會在每期週報底部及時更新編輯內推崗位。
關注我們
我們開通了公眾號,每期釋出時公眾號(OldDriverWeekly)會推送訊息,歡迎關注。
同時也支援了 RSS 訂閱:github.com/SwiftOldDri… 。
說明
? 表示需翻牆,? 表示編輯推薦
預計閱讀時間:? 很快就能讀完(1 - 10 mins);? 中等 (10 - 20 mins);? 慢(20+ mins)