老司機 iOS 週報 #105 | 2020-03-16

老司機iOS週報發表於2020-03-16

老司機 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

系列文章:

@紅紙: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 模擬器的推送:

  1. 使用命令列:xcrun simctl push booted test_push_notification.apns
  2. 通過拖拽 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 專案工具中採用的示例:

  1. indexstore-db:一個包含兩個命令的簡單實用程式。
  2. swift-format:使用了一些高階功能,例如自定義選項值和隱藏標誌。

內推

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

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

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

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

關注我們

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

老司機 iOS 週報 #105 | 2020-03-16

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

說明

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

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

相關文章