老司機 iOS 週報 #107 | 2020-03-30

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

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

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

新手推薦

? 【譯】用UIKit和UIView在檢視上執行iOS動畫

@極速男孩:本文介紹了 UIView 中實現動畫的幾種方法以及各個引數的意義,最後簡單介紹瞭如何去優化動畫的效能。可以參考原文

文章

? 為什麼 Debug Information Format 改為 DWARF 可以提高編譯速度?

@J_Knight_:本文探索了將 Debug Information Format 改為 DWARF 可以提高編譯速度的原因。首先介紹了 DWARF 和 dSYM 的生成時機,以及設定 DWARF with dSYM 與否的產物區別和效能區別,並提供了在不同情況下的效能測試結果。通過本文可以讓我們對編譯器的編譯過程、偵錯程式的除錯符號查詢過程有較為深入的認識,也可以讓我們明白為什麼這種優化可以帶來編譯效能的提升。

? 微信支付跨平臺軟體架構

@蓮叔:說起跨平臺,我們一般想到的都是 RN、Weex 這樣基於 JS 技術棧的跨平臺技術。但 iOS、Android 都提供了比較友好的交叉編譯工具,使得基於 C/C++ 的跨平臺開發也是非常值得考慮的一個選項。微信支付基於業務邏輯複雜、雙端實現不一樣導致的高昂的維護成本的背景下,開發了一套基於 C++的跨平臺開發框架,使得核心的業務邏輯都下沉到 C++中,使用同一份程式碼來實現,取得了非常顯著的業務效果。該文對該架構進行了詳細的介紹,也有很多關於架構設計過程中的考量的解析,非常有參考價值。推薦工作中有較多架構工作內容的同學閱讀。

Swift 5.2 正式釋出 & 5.3 正在路上

@享耳先森:Swift 5.2 已經正式釋出,主要是對錯誤診斷的增強以及以下兩個新特性:

Swift 5.3 已確定相關計劃,專注於質量和效能提升,另外,預計將增加對 Windows 及其他 Linux 發行版的支援。

? Weex、RN 還是 Flutter?資深技術專家與你聊聊阿里跨平臺思路

@looping:本文介紹了跨平臺開發的發展趨勢和變化,並提出從研發成本、靈活性、效能體驗這三個角度來考慮如何選擇適合自己的跨平臺開發框架,同時也介紹了阿里各跨平臺開發框架的發展及應用,以及 5G 時代給移動領域帶來的新機會。

? 手淘 App 如何落地 Swift ?一邊探索實踐,一邊“打怪升級”

@JimQ:上個月週報推薦了從探索到落地,手淘引入 Swift “歷險記”,本篇是 InfoQ 對文章作者最新的採訪稿。

  1. 首先,更細緻的講述了決定引入 Swift 之前的各種考慮,以及在落地過程中流程和方法的摸索。
  2. 討論了中國 Swift 生態落後於國外的原因,以及隨著 Swift ABI 的穩定,對未來一兩年國內生態進步的極大期許。
  3. 最後,談了年度熱點 SwiftUI 和 Flutter,以及移動跨平臺技術的選擇問題。

? 滴滴正式釋出開源客戶端研發助手DoKit 3.0,新特性解讀

@紅紙DoKit(DoraemonKit) 是滴滴開源的一款功能齊全的客戶端研發助手。在最新發布的 3.0 版本中,新增了多項新功能:

  1. 介面 Mock:攔截 APP 的網路請求進行轉發至 DoKit 平臺,返回開發人員預先設定好的資料
  2. 健康體檢:該功能開啟後,DoKit 會在一定間隔時間內去記錄 CPU、記憶體、FPS 等資訊,與此同時會觸發式收集網路、頁面卡頓類資料。將此類資料上傳到 DoKit 平臺後可以進行圖形化展示分析
  3. DBView:將我們的 APP 內資料庫同步到 PC,在 PC 上完成的增刪改查會同步到 APP 的資料庫內
  4. 函式耗時:採用 Hook objc_msgSend 的方式,來記錄每個函式的耗時,並已樹形結構輸出

如果你的 APP 還沒有合適的 Debug 工具集合,DoKit 值得一試。詳細文件請查閱 DoKit 官方文件

? Flutter Platform Channel 使用與原始碼分析

@CrazyCoderShi:日常的 Flutter 開發中,如果你想和 Native 層互動,那麼 Platform Channel 是必經之路,提供方便之餘我們也好奇其實現原理,底層是如何操作的,本文多個緯度深度剖析 Platform Channel ,其中原始碼分析更是抽絲剝繭,從更深的層次帶你全方位瞭解 Platform Channel 。

? 在 ARC 下對非 ObjC 型別的指標進行操作的編譯器陷阱

@kyo:在 MRC(手動管理記憶體) 時代,記憶體管理是一件很重要的事,稍有不慎,就可能造成記憶體洩漏甚至 crash 。如果開啟了 ARC 模式,在 backend 階段會通過幾個 ObjcARC Pass 插入基於引用計數的記憶體管理語句,從而使我們不必再去手動 retain 或者 release 物件,而且,ARC 下的記憶體管理常常會比我們手動管理得更好,記憶體洩漏更少。但 ARC 也並不是完全不會出錯,如果某些隱式操作逃過了 ObjCARC Pass 的“火眼”,可能會生成不配對的 RC 語句,從而導致執行時異常。本文介紹了兩種可能引發 ARC 異常的情況並分析了原理,也可以讓我們更深入瞭解 ARC 的底層原理。

程式碼

? SourceKitForSafari

@蓮叔:相信對於絕大多數開發同學來說,在選擇把一個 github repo clone 到本地之前,都會在頁面上先瀏覽一下程式碼,看一下是否能夠大概滿足自己的要求。但在網頁上看程式碼普遍是比較痛苦的,SouceKit for Safari 就是解決這個痛點的一個外掛,它實現了在瀏覽器的環境中實現一些基本的 IDE 功能,比如跳轉到定義,檢視文件以及檢視變數定義等功能。配合 Octotree 外掛(github 的檔案列表外掛),相信可以極大的提升 github 的使用體驗。我已經迫不及待想要嘗試一下了。

內推

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

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

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

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

關注我們

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

老司機 iOS 週報 #107 | 2020-03-30

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

說明

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

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

相關文章