老司機 iOS 週報 #86 | 2019-10-14

老司機iOS週報發表於2019-10-14

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

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

新聞

Twitter 重新上架 macOS 客戶端

@張嘉夫:10 月 11 日,Twitter 重新上架了經過 Project Catalyst 重寫後的 Twitter for Mac 客戶端。新版 Twitter 客戶端支援拖拽、深色模式、多視窗瀏覽以及快捷鍵操作等功能。

文章

? Swift 的字串為什麼這麼難用?

@Damonwong: Swift 的字串的設計可以說是 Swift 中最難以理解的語法之一了。不過,我們週報的小夥伴 @kemchenj 同學寫了一篇通俗易懂的文章,詳細闡述了

  • 為什麼會存在 Collection.Index 這個設計
  • 目前的 Collection.Index 是怎麼設計的,存在哪些問題
  • 未來的 Collection.Index 會怎麼改進

感興趣的同學可以仔細閱讀一下,算是一篇不錯的 Swift 語法進階文章。

? iOS 端 h5 頁面秒開優化實踐

@蓮叔:基於移動端的 H5 快開優化已經成為各大 App 的標配模組,通常的做法有資源快取、離線包、data prefetch等等。本文作者首先分析了 H5 頁面載入的流程,並在 iOS 上基於 WkWebview 通過實現請求的攔截,實現了資源快取的機制。文章整體不算體系,因為並沒有包含很多 state of the art 的優化方式,但在 WkWebview 的使用技巧上介紹的還比較詳細,仍是一篇值得一看的文章。

? The Simple Life(cycle) of a SwiftUI View

@老驢: 相信大家對 UIKit 中 UIView,UIViewController 的生命週期一定是熟悉到不能更熟悉了,這些知識點也一直是面試中的常考問題。那麼在 SwiftUI 中,View的生命週期又是怎麼樣的呢?這篇文章就介紹了作者對其的理解。有興趣使用 SwiftUI 的同學麼可以簡單的瞭解一下。

? Reducing iOS storyboard merge hell

@J_Knight_:作者介紹了幾種避免在合併程式碼時在 storyboard 引起的衝突的方法:使用 SwiftUI,使用 nib,Diff 工具,鎖定檔案等方法。經常使用 storyboard 開發的朋友可以看一下。

? iOS 13

@老峰:本文來自 Mattt (@mattt) 分享了 iOS 13 中的一些新的 API 及框架:

文章還分享了 MapKit、JavaScriptCore、UIKit 等新的 API,限於篇幅不一一列舉。

? Alternatives to protocols in Swift

@四娘:Swift By Sundell 這周探討的是 protocol 的替代品,雖然 Swift 稱自己為 protocol-oriented,但實際上有很多問題都不適合使用 protocol,作者列舉了一些例子並且提供了更好的解決方案。

? 重磅|庖丁解牛之——Flutter for Web

@邦Ben:眾所周知,1.9 版本加入了 Flutter Web 的支援,但也僅限於技術預覽。該文通過移動端原理和 Web 方式進行對比,直觀感受到兩者區別(差異主要在 dart:ui 和 engine 這一層)。

優點:通過 HTML + CSS + Canvas 的方式更好的相容,低成本遷移(Flutter 上層直接相容) 缺點:dart2js 生成的程式碼過大,功能尚不完備,使用的 BitmapCanvas 會導致一些縮放場景有效能問題

在這麼一個優秀的分層設計中,Flutter Web 仍值得繼續期待,等到可用版本出現。

? A Comprehensive Guide to All 120+ Settings URLs Supported by iOS and iPadOS 13.1

@享耳先森:iOS 的 Settings App 一直都支援通過 URL Scheme 的方式開啟某一個子項,本文作者收集了 120+ 個在 iOS 13 下支援的 URL,大家可以瀏覽看是否有滿足自己需求的點。需要注意的是:這些 URLs 隨時可能在未來 iOS 版本中移除或被 Apple 稽核團隊以 Private API 為由拒絕上架。

? Reverse Engineering Swift Applications

@極速男孩:本篇文章主要介紹瞭如何去反編譯一個 Swift 的 app 。首先介紹了使用如何通過 Name Mangling 和 swift-demangle 來反編譯得到一個 Swift 的 app 中的方法。Class Dump 現在已經對 Swift 提供了有限的支援。最後探索了去 hook swift 中的方法的可能。

程式碼

基於 NSProxy 開發的支援資料繫結、事件繫結的庫

@含笑飲砒霜:GICDataBinding 是一款基於 NSProxy 開發的資料繫結庫,支援資料繫結(單向、雙向)和事件繫結,重要的是支援 JS 表示式,當然也支援 Swift 開發,但是要求 Swift 中的資料型別必須是 NSObject 子類。基於 GICDataBinding 資料繫結系統,可以做一些之前實現起來比較複雜的功能,比如重新思考 ViewModel 的定義,將 ViewModel JS 化、配合 Texture 實現整個 UI 基於繫結系統的可響應式設計等。

Flutter 動畫元件

@CrazyCoderShiFlutter Animation Set 由 YYFlutter 團隊開發, 簡潔的 API , 簡化了動畫實現, 特別是組合動畫. 專案預設實現了不少酷炫的效果, 開箱即用.

Yaap: Yet Another (Swift) Argument Parser

@anotheren:Yaap 是一個 Swift 寫的 CLI 庫,它使用了 MirrorProperty Wrapper 簡化引數和選項的宣告,並具有以下特性:

  • 強型別的引數和配置解析;
  • 自動生成幫助和使用資訊;
  • 多命令路由;
  • 智慧拼寫錯誤提示

如果你也在從事命令列相關的開發,不妨試一試。

xcderiveddata

@Jimq:用於列印 Xcode 工程的派生資料目錄(derived data directory)的命令列工具,也支援把結果傳遞給 xcodebuild 或其他命令去自行化你的構建過程。

音視訊

ggtalk | 網際網路公司的開發流程

@ggtalk:最近幾個月翻譯組的大事之一,就是蓉老師的開發流程調研。為了獲得最新最全的資訊,專程去廣州和各位大佬討論開發流程。蓉老師基本聊遍了國內的一線網際網路公司,整理了一份文件,會在這期中詳細介紹。

除了介紹流程,我們還討論了一些相關內容,比如流程存在的問題、國內流程做的好的公司、研究流程對我們自己的意義等等。如果你的團隊正面臨流程問題,應該能從這期節目中獲得一些靈感。

這期講的內容比較長,容易走神,大家可以對照著文字版來聽:文字版流程整理摸我

內推

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

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

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

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

關注我們

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

老司機 iOS 週報 #86 | 2019-10-14

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

說明

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

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

相關文章