老司機 iOS 週報 #117 | 2020-06-15

老司機iOS週報發表於2020-06-15

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

你也可以為這個專案出一份力,如果發現有價值的資訊、文章、工具等可以到 Issues

新聞

? 蘋果公佈史上最大規模的 WWDC20 陣容

@享耳先森:WWDC 已經進入第 31 個年頭,WWDC20 將於 6 月 22 至 26 日以前所未有的虛擬方式將全球超過 2300 萬的蘋果開發者社群聚集在一起,將成為迄今為止規模最大的 WWDC。

Keynote 主題演講在北京時間 23 日凌晨 1 點開始,對於中國的觀眾來說,主題演講也將在騰訊、愛奇藝、Bilibili 和優酷上進行直播。同時,超過 1000 名蘋果工程師將在 Developer Forums 回答問題並參與技術討論,開發者可以釋出自己的問題,直接向蘋果專家學習。

文章

? ? iOS 架構談:剖析 Uber 的 RIB 架構

@老驢:這是一篇由 Uber 工程師撰寫,知識小集團隊翻譯的對 Uber RIB 構架的解析文章。RIB 從很多年前 Uber 切換 Swift 開始使用,到今天已經存在了很長時間了,應該可以說算是一種經得住考驗的構架。如果很多年前你對 RIB 構架的理解沒有很深入的話,也許你今天再回頭來看,就會有更深的理解。

還記得2,3年前,構架風潮興起的時候,幾乎所有的公司的,所有的團隊都在搞自己的構架。然而,經歷了時間的考驗,並不是所有的構架最後都存活了下來。談點個人看法:所有的構架都應該以自己的業務需求為出發,為了構架而構架,那就是耍流氓了。這個角度上去說,也許很多年以後,再回頭去看,說不定覺得 MVC 才是更好的選擇呢?

? ? Flutter 卡頓問題的監控與思考

@極速男孩 : 卡頓問題一直是開發中比較關注值得關注的問題。本文首先介紹瞭如何去判斷卡頓以及卡頓的原理,然後從修改 Dart SDK, AOT 模式下采集堆疊(暫停執行緒),AOT 模式下采集堆疊(通過訊號)這三種不同的解決方案,並比較了三中不同方案各自的優劣勢。

? 如何在模組化/元件化專案中實現 ObjC-Swift 混編?

@含笑飲砒霜:在單一 target 的專案中,ObjC 和 Swift 可以直接通過橋接檔案 bridging header 實現混編,但如果是在多個 target 或 library 或 framework 中,是不能使用 bridging header 的,這時候如何實現混編呢?文中詳細記錄了在混編過程中的踩坑歷程,可供大家參考借鑑。

推薦閱讀:一波 N 折的攜程酒店 Swift-Objc 混編實踐

? iOS 中的網路除錯

@looping:本篇文章不僅詳細地介紹了我們所熟悉的一些網路除錯工具和原理,而且還經過實踐給出了一個不會影響原有網路請求,又能拿到所有網路請求回撥的方法。在閱讀過程中我們會進一步瞭解到作者能通過學習借鑑開源框架、官方示例等的設計原理,為解決問題帶來新思路,不斷地優化演進成最終方案,非常值得肯定和學習。

? 在block內如何修改block外部變數?

@水水 : 如果面試被問:在 block 內如何修改 block 外部變數? 你會如何回答呢?如果你不清楚沒關係,本文簡潔明瞭的帶你瞭解底層原理,值得一讀。

? 版本管理工具及 Ruby 工具鏈環境

@紅紙:來自瓜神的**「CocoaPods 歷險記」**系列第一篇,本文介紹了版本管理工具以及 Ruby 工具鏈環境。從中我們可以學習幾個不同的版本管理工具的差異,以及 Cocoapods 作為包管理工具如何控制 iOS 專案中各個依賴庫版本資訊。另外瓜神通過實操 Bundler 管理工程的全流程,詳細介紹瞭如何控制 Gem 的版本資訊,以及如何使用 rbenv 管理對應的 ruby 版本。

? Swift Pointers Overview: Unsafe, Buffer, Raw and Managed Pointers

@anotheren:指標是 Swift 語言中最複雜的功能之一,本文成體系地介紹了 Swift 中的 19 種指標,並詳細解答了它們是什麼,何時使用以及從中可以得到什麼。如果你對音視訊感興趣,那麼你在和底層介面(主要是一些 C API)打交道的過程中是繞不開指標的,快去了解一下吧。

工具

Swift Package Index

@EyreFree:隨著 Xcode 11 中開始整合 Swift Package Manager,越來越多的第三方庫也新增了對 SPM 的支援,切換到 SPM 已經逐漸成為可能。swiftpackageindex.com 是一個對支援 SPM 的 Swift 庫的索引,即一個 SPM 庫搜尋引擎,它目前是一個非官方的、由開源社群維護的專案。它的實現原理很簡單,資料是依靠人工錄入的,即當有人將開源庫提交到主列表中時(有需要提交的庫?點這裡),此站點會立即對它進行完全克隆,並且每隔幾個小時進行一次輪詢,以便在索引中看到的資訊始終反映最新的庫版本,而不需要庫作者執行任何操作。選擇正確的依賴關係不僅僅是找到滿足您需要的程式碼,挑選高質量的庫是很困難的,swiftpackageindex.com 軟體包索引可以幫助您更好地決定依賴關係,快來嘗試一下吧!

程式碼

全新技能,FDottedLine

@邦Ben:Flutter 官方庫並沒有提供方便的實現虛線的庫(其實就是生態還比較弱)。FDottedLine 這個庫則提供了靈活構建虛線效果的元件。如果有虛線需求的童鞋,不妨使用一下。

  • 同時支援水平、垂直兩個方向的虛線
  • 支援建立虛線形狀
  • 提供超簡單的方式為 Widget 新增虛線邊框
  • 支援建立靈活的虛線邊角效果

內推

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

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

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

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

關注我們

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

老司機 iOS 週報 #117 | 2020-06-15

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

說明

? 表示需某工具,? 表示編輯推薦

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

相關文章