老司機 iOS 週報 #65 | 2019-04-29

老司機iOS週報發表於2019-04-29

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

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

新聞

『基於多重替換方式的 iOS 程式碼混淆方案』- 勘誤

在 65 期,我們收錄了『基於多重替換方式的 iOS 程式碼混淆方案』一文,後經讀者反饋,我們發現這篇文章的內容存在嚴重的抄襲跡象。文中涉及到的混淆方案抄襲自 @kaichcodeobscure。目前該文章的在知乎和掘金上已經被刪除,週報也在第一時間刪掉了有爭議的推薦內容。對此次事件,我們對 @kaich 和廣大讀者表示抱歉,同時也感謝各位讀者的監督和反饋。

另外,在收到反饋之後,我們小挖了一下那篇抄襲文的作者,發現此人是慣犯,洗稿專業戶。他的 GitHub(RobinChao)和部落格(Technical.io),真的是仿品聚集地。

WWDC 2019 for developers: Siri, Marzipan and AR improvements, more

距離今年的 WWDC 已經只有將近一個月的時間了,眾所周知,WWDC 向來能帶給行業和開發者帶來全新的圍繞使用者體驗新技術,本篇文章給我們介紹了本次 WWDC 會發布的新的 API 以及特性,主要有:

  1. 新的 Siri intents
  2. Marzipan 的優化(Marzipan 就是讓 macOS App 也能用上 UIKit 的技術)
  3. Swift-only 的 AR 框架
  4. 震動引擎,NFC 在以前的基礎上提供了更多的功能
  5. CoreML 支援動態訓練以及音訊的分析

新手推薦

How to make Auto Layout more convenient in iOS

@邦Ben:該文從 Frame 佈局,到 Autoresizing 講到了 AutoLayout,並且介紹瞭如何簡單的進行封裝 AutoLayout,以提高易用性。畢竟眾所周知,原生的 AutoLayout 異常難用,在 OC 下,Masonry 的出現簡直是拯救了世界。在 Swift 下,各種佈局系統百花齊放。同時眼光不妨放到 React Native 和 Flutter 上,宣告式佈局非常值得學習。

文章

? RxSwift & MVVM - How to use RxTests to test your ViewModel

@Damonwong:之前我問過好多人這樣一個問題,你覺得 Rx 框架到底解決了一個什麼樣的問題?雖然答案都不太一樣,但是引入 Rx 框架,便於封裝 ViewModel,然後編寫單元測試提高應用穩定性是大部分人比較認可的一點。

所以推薦大家閱讀一下作者寫了三篇關於 RxSwift & MVVM 的文章:

? Conditional Compilation Part 1 Part 2 Part 3

@四娘:之前我們在 29 期週報裡介紹過這篇文章的第一篇:

本文講述了 Swift 中方的條件編譯。當然首先是傳統的方法 arch(),作者對各個引數都做了詳細的介紹。不過隨著 Swift 4.1 的到來,你更應該瞭解一下方便好用的 targetEnvironment()(SE-0190)。其次是使用配置檔案(.xcconfig),這個方式其實被 CocoaPods 大量使用。作者也用示例做出了詳細的介紹,同學們不妨也在自己的工程中試一試。

後面陸續寫了 Part 2 和 Part 3,主要是介紹了跨平臺程式碼庫編譯選項的一些控制方式,對這方面有疑慮的同學可以看一看

? Flutter 實時視訊渲染

@CrazyCoderShi:Flutter 如火如荼的火了一段時間了,但鮮少有關於音視訊方面的文章,本文是聲網 Agora 的高階架構師張乾澤在 RTC Dev Meetup 上的分享,主要介紹 Agora 在 Flutter 實時音視訊開發方面的實踐經驗,整個分享分三部分:

  • 基於 Texture Widget 實現思路分析
  • 基於 PlatformView 實現思路分析
  • 兩種方案的效能對比

? 對職業發展的一些想法

職業發展是每一個職場同學都會去思考的很重要的問題,我們也常常說有時候選擇比努力更重要,除了個別的運氣成分外,我們能過左右的就是如何去做選擇。本文是 limboy 對職業發展的一些看法,從稀缺度剩餘市場空間這樣兩個角度去談,結合生動的座標圖,讓人一看就很明瞭。

? How to run a single test in Xcode

@老峰:本文作者歸納總結了在 Xcode 中執行單元測試的一些小 tips:

  • 通過 gutter (左邊列)
  • 通過 shortcut (快捷鍵 ^ ⌥ ⌘ U)
  • 通過 scheme
  • 通過 terminal
  • 通過開源測試庫如:Quick

? iOS 中的 Promise

@四娘:當你需要連續地執行多個非同步過程時,總會無可避免的出現地獄回撥,Promise 是一個不錯的解決方案,這篇文章前半部分主要講了 Promise 具體的實現,後面介紹了一些實用的 API,感興趣的朋友可以看一下。

? Preventing Infinite Loops in Swift Property Observers

@張嘉夫:Swift 的屬性觀察器 (即 willSetdidSet hook 函式)非常實用,可以用於驗證、通知和呼叫 log 方法等等,適用於結構體、類和列舉。但在使用強大的屬性觀察器時,要避免搬起石頭砸了自己的腳,這篇文章會為你介紹如何避免在 Swift 屬性觀察器中建立無限迴圈。

? 如何畫出一張合格的技術架構圖?

畫架構圖是架構師的第一門課,本文介紹了架構圖的各種畫法和具體案例,希望讓大家在架構圖方面的理念和經驗得到提升

架構圖分類

  1. 場景檢視:一般就是我們理解的用例圖
  2. 邏輯檢視:一般是元件圖和類圖
  3. 物理檢視:一般是部署圖
  4. 處理流程檢視:一般是時序圖和流程圖
  5. 開發檢視:一般是包圖

好的架構圖:好的架構圖是不需要解釋的,它應該是自描述的,並且要具備一致性和足夠的準確性,能夠與程式碼相呼應

最後推薦 C4官網,有各種畫圖的模板可以參考

工具

MTHawkeye

@looping:MTHawkeye 是美圖 iOS 團隊開源的除錯和效能優化輔助工具集,旨在幫助 iOS 開發者提升開發效率、優化效能體驗。目前已經包含對記憶體、CPU、電量、網路等的使用監控。由於該工具模組採用了可擴充套件的外掛式設計,所以我們也可以根據自己的需求定製合適的開發除錯外掛。詳細介紹可以參考這篇文章 MTHawkeye:美圖開源的iOS除錯輔助、效能優化工具集

程式碼

Swiftshield

@oldonkey:這是一套程式碼混淆工具,作用是加密工程的函式和類名,來免疫一些逆向工程。加密的原理很簡單,就是把所有函式和類名都替換成一段新的字串。此工具可以加密,也可以解密,以方便對 Log 進行 Debug。

開源庫

IkigaJSON

IkigaJSON 是一個非常快的 JSON 解析器,它的解析速度大概是是 Foundation 中對應元件的 4 倍。它也提供了 SwiftNIO 的支援(同時也依賴 SwiftNIO),你可以直接從 ByteBuffer 物件初始化需要的 JSON 。

音視訊

ggtalk | 聊聊我們的程式設計啟蒙經歷

@J_Knight_:本期 ggtalk 邀請的嘉賓是李亮老師和蓮叔。圍繞本期的主題,二位嘉賓和主持人樑傑都分享了各自的程式設計啟蒙經歷。

此外,還分享了對“中年危機”的看法以及關於小孩應該如何入門程式設計的討論。

內推

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

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

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

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

關注我們

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

老司機 iOS 週報 #65 | 2019-04-29

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

說明

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

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

相關文章