老司機 iOS 週報 #116 | 2020-06-08

老司機 iOS 週報,只爲你呈現有價值的信息。前端

你也能夠爲這個項目出一份力,若是發現有價值的信息、文章、工具等能夠到 Issues 裏提給咱們,咱們會盡快處理。記得寫上推薦的理由哦。有建議和意見也歡迎到 Issues 提出。ios

新手推薦

🐕 3 steps to speed up storyboard

@極速男孩:storyboard 做爲 iOS 的一種對 viewcontroller 的控制的方法被普遍使用,本文簡單介紹瞭如何快速的使用 storyboard 來對你的 viewcontroller 進行管理。git

文章

🌟 🐕 TrampolineHook - 解決棧污染問題支持變參 Hook

本文是 TrampolineHook 框架系列文章最新的一篇。TrampolineHook 是一箇中心重定向框架,能夠經過一個函數替換/攔截全部你想要的函數的框架。若是對這個庫不瞭解能夠先看前面的幾篇文章:github

本文主要講該庫在以前實現中的一個錯誤,關於上下文污染的問題,本文從彙編角度比較深刻的講解了這個問題,但並不須要讀者很瞭解彙編的內容,有興趣的同窗能夠看一下。json

🌟 🐕 移動前端開發和 Web 前端開發的區別是什麼?

@張嘉夫:前端這門技術,從誕生髮展至今不過寥寥十餘年。若是說前十年是 PC 前端的時代,那後十年必定是屬於移動前端的時代。特別是隨着網絡制式的發展,移動設備在全球範圍內獲得了空前的普及,在前端領域,Hybird Web、React Native、Weex、Flutter 等等一系列新的移動前端技術也如同雨後春筍般冒出來。在這篇來自阿里巴巴新零售淘系技術部的文章中,做者分享了其對於「移動前端開發和 Web 前端開發」的理解,具體包括前端發展史回顧、移動前端混合技術的前世此生以及對將來回歸本源的探討。swift

🌟 🐕 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 的內存佔用。而開發中最有可能遇到內存上限問題的就是圖片或者是視頻了,做者使用了一些有意思的辦法來繞過這樣的限制,有興趣的不妨來看看。app

🐕 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)

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息