老司機 iOS 週報,只為你呈現有價值的資訊。
你也可以為這個專案出一份力,如果發現有價值的資訊、文章、工具等可以到 Issues 裡提給我們,我們會盡快處理。記得寫上推薦的理由哦。有建議和意見也歡迎到 Issues 提出。
新手推薦
? 3 steps to speed up storyboard
@極速男孩:storyboard 作為 iOS 的一種對 viewcontroller 的控制的方法被廣泛使用,本文簡單介紹瞭如何快速的使用 storyboard 來對你的 viewcontroller 進行管理。
文章
? ? TrampolineHook - 解決棧汙染問題支援變參 Hook
本文是 TrampolineHook
框架系列文章最新的一篇。TrampolineHook
是一箇中心重定向框架,可以通過一個函式替換/攔截所有你想要的函式的框架。如果對這個庫不瞭解可以先看前面的幾篇文章:
本文主要講該庫在之前實現中的一個錯誤,關於上下文汙染的問題,本文從彙編角度比較深入的講解了這個問題,但並不需要讀者很瞭解彙編的內容,有興趣的同學可以看一下。
? ? 移動前端開發和 Web 前端開發的區別是什麼?
@張嘉夫:前端這門技術,從誕生髮展至今不過寥寥十餘年。如果說前十年是 PC 前端的時代,那後十年一定是屬於移動前端的時代。特別是隨著網路制式的發展,移動裝置在全球範圍內得到了空前的普及,在前端領域,Hybird Web、React Native、Weex、Flutter 等等一系列新的移動前端技術也如同雨後春筍般冒出來。在這篇來自阿里巴巴新零售淘系技術部的文章中,作者分享了其對於「移動前端開發和 Web 前端開發」的理解,具體包括前端發展史回顧、移動前端混合技術的前世今生以及對未來回歸本源的探討。
? ? How the SwiftUI DSL Works
@蓮叔:SwiftUI 算是 Swift 近幾個大版本中最令人興奮的 feature,雖然不少同學在試水後都得出了目前還不成熟的判斷,但這並不影響其定位了未來的 UI 開發方式。本篇文章作者嘗試聊了聊 SwiftUI 實現中的一些關鍵技術,主要描述了 function builder 機制,文章比較淺顯易懂,內容不多,比較適合新手學習。
? ? A Type-Safe FileWrapper
@xiaofei86:在 Document Based Apps 中,NSDocument 作為最重要的基類,提供了自動儲存、執行緒安全、iCloud 衝突解決等功能。NSDocument 可以持有 Data 和 FileWrapper 兩種型別的檔案資料。FileWrapper 為自定義檔案型別的容器,本文通過示例簡單講述了 FileWrapper 的應用,有興趣可以閱讀原文了解,也可以通過蘋果 官方文件 瞭解更多 Document Based Apps 的開發指南。
? Dealing with memory limits in iOS app extensions
@老驢:Notification extension 和 share extension 算是 iOS 中前兩年比較火爆的話題了,這兩年似乎熱點過去,大家關注的也不多,蘋果也沒有在這塊繼續著力,framework 更新的也很少。
這位作者就在開發中遇到了記憶體上限問題,Notification extension 最高只能支援 24 MB 的記憶體佔用,而 Share extension 最多支援 120 MB 的記憶體佔用。而開發中最有可能遇到記憶體上限問題的就是圖片或者是視訊了,作者使用了一些有意思的辦法來繞過這樣的限制,有興趣的不妨來看看。
? How We Use Feature Flagging on iOS
@老峰:Feature Flagging (又名 Feature Toggle、Flip 等)是一種允許控制線上功能開啟或者關閉的方式,通常會採取配置檔案的方式來控制。本文作者以 WordPress 為例講解了通過 配置 Build Configurations 等在 iOS 中實現 Feature Flags,WordPress-iOS 是個開源專案,感興趣的讀者可以點這裡閱讀原始碼。
? Decode and Flatten JSON with Dynamic Keys Using Decodable
@四娘:有時候後端下發的 JSON 檔案會採取動態 key 的形式,那在 Codable 裡該如何實現呢?這篇文章就介紹瞭如何動態 key 的結構該如何解析以及封裝的方式。
程式碼
? InterposeKit
@EyreFree:InterposeKit 是一個可以幫助我們快速、優雅地在 Swift 中進行 Swizzle 的庫,它的作者是 Peter Steinberger,你可能對這個名字沒什麼印象,但你可能聽過他的另一個開源庫 —— Aspects。InterposeKit 是用純 Swift 5.2 編寫的,有完備的文件並經過了全面的測試。它可以用於 Objective-C 例項方法和被 @objc dynamic
修飾的 Swift 函式。推薦在 Swift 中有 Swizzle 需求的同學一試,以下是一些關鍵點:
- Interpose 直接修改方法的實現,這比基於
selector
的方式要好; - 可以通過呼叫
revert()
輕鬆實現鉤子的撤銷; - 純 Swift 實現,而不是使用低效的
NSInvocation
; - 沒有型別檢查,雖然帶來了一些 crash 風險但也更加靈活;
- 必須手動指定結果型別兩次,這是一種為了避免使用
NSInvocation
或彙編的折衷; - 當類在執行時被載入時,延遲插入。
內推
老司機週報團隊聯合知識小集和 SwiftGG 翻譯組收錄了一份靠譜的內推職位。
如果你想找工作,點這裡:www.yuque.com/iosalliance…
如果你想招人,點這裡:www.yuque.com/iosalliance…
當然,也歡迎你關注我們每一期的週報,我們會在每期週報底部及時更新編輯內推崗位。
關注我們
我們開通了公眾號,每期釋出時公眾號(OldDriverWeekly)會推送訊息,歡迎關注。
同時也支援了 RSS 訂閱:github.com/SwiftOldDri… 。
說明
? 表示需某工具,? 表示編輯推薦
預計閱讀時間:? 很快就能讀完(1 - 10 mins);? 中等 (10 - 20 mins);? 慢(20+ mins)