老司機 iOS 週報 #17 | 2018-05-02

老司機iOS週報發表於2018-05-02

歡迎 @方秋枋 加入週報的編輯的隊伍。

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

新聞

Swift for TensorFlow 正式釋出

TensorFlow 社群在 TensorFlow Dev Summit 2018 上宣佈將開源 Swift for TensorFlow 專案,現在終於正式釋出了,這裡是原始碼及示例 Models.

文章

? ? iOS 新聞類 App 內容頁技術探索

文章針對新聞類 App 內容頁的技術實現進行了探索和分析。並將成果封裝成三個框架:HybridPageKitReusableNestingScrollview 以及 WKWebViewExtension

文章不僅從技術方案選擇,元件化架構,載入速度優化給我們高屋建瓴地展示了新聞類的 Hybrid 技術應該如何構建,更重要地是開啟了我們的腦洞:Hybrid應該怎麼玩才有意思。不是簡單地嵌入webview,使用一下 JSBridge 就是 Hybrid 了。而是取長補短,讓 WebView 和 Native 技術攜手構造更優秀的應用體驗,創造屬於自己的小程式框架和能力。

? ? ? Code Review Best Practices

非常細緻的介紹了 code review 的整個流程。

  • 為什麼需要,是什麼,什麼時候需要 code review
  • 在 code review 前需要做哪些準備工作
  • 如何執行 code review
  • code review 的一些示例

? Securing iOS Certificates using Modern Cryptography

文章的主題為使用現代加密技術保護 iOS 證書(certificates)。我們平時測試,提交應用到AppStore 都需要用到蘋果給我們的開發證書。閱讀本文,我們可以學習到如何通過 openSSL 對 iOS 開發證書進行加密。

? Design Patterns by Tutorials: MVVM

MVVM 作為解決 MVC(Massive View Controller) 最有效的解決方案,已經成為 iOS 程式設計師的必學模式之一。Ray 的這篇文章拋開傳統設計模式教學那種枯燥的說教,而是先手把手的使用 MVVM 的方式來實現一個小 Demo,簡單易懂。值得一提的是,這是很少的純 MVVM 教程,不像大多數 MVVM 教程都喜歡打包講一些 reactive 和 data binding 的東西,適合萌新選手。

? Blurring the Lines Between MVVM and VIPER

VIPER 是又一個移動開發中流行的設計模式,初看 VIPER 中各個模組的分工,總會覺得和 MVVM 其實是有幾分神似。這篇文章通過仔細分析 MVVM 和 VIPER 中各個元件的責任劃分,認為 MVVM 本質就是隻有 V I 和 E 的 VIPER。當業務變得複雜時,VIPER 可以衍生出 Presenter 和 Router 來保證職責劃分,所以一個動態調整的 VIPER 模式相比簡單的 MVVM 應該是一個更優的實踐。

本文討論內容有趣,但其思路和論證方法,都值得借鑑。

? Why you should not name your @IBActions didTapButton

我們有時會在程式碼中看到 @IBAction 方法被命名為 didTapCancelButtondidTapSaveButton 或是 didHitSendcancelButtonTapped 等型別的名稱。但我認為這樣是錯誤的,首先因為 Target-Action 是命令模式而不是委託模式,應該命名為 undodeleteBackwardlowercaseWordscrollToEndOfDocument 這樣的名字。其次我們在編譯時並不知道 sender 具體是誰,所以我們不應在方法名稱中指定 sender 的型別。

? SceneKit 與 ARKit 專題

SceneKit 系列文章是作者在學習 Ray Wenderlich 的 SceneKit 教程《3D Apple Games by Tutorials》時做的學習筆記與心得體會,共有26篇文章,內容翔實。ARKit 專題文章還在持續更新中,包括製作類似 AR Stack 遊戲的教程、對官方 AR Demo 的解讀以及對 ARKit 1.5 新增的圖片識別功能的介紹等等。

? Custom Keyboard Extensions: Getting Started

自定義鍵盤擴充套件的入門教程,從 0 到 1 的講解如何建立一個摩爾斯電碼鍵盤,包括自定義鍵盤的介面,自適應鍵盤配色方案,自動糾正和建議,請求許可權等內容。

? A Better MVC

很多 iOS 開發不喜歡 MVC,因為 iOS 中的 MVC,往往違反封裝原則,且容易形成臃腫的 ViewController。解決封裝原則的問題,可以通過引入一個協調器(Coordinator),所有的子檢視控制器或者檢視,只負責顯示,而如何顯示它們,則委託給協調器去處理。 ViewController 臃腫的問題,需要知道,1 View Controller ≠ 1 screen of content, 可以將一個頁面,分割成一個一個的子 ViewController,去負責頁面元素的顯示,而主 ViewController 只作為協調器存在。

該文作者近期參加了『App Builders 2018』,並也針對這個主題進行了分享,有興趣的讀者可以到 YouTube 上面觀看這個分享視訊——Dave DeLong - A Better MVC

? iOS App 的加固保護原理

出自網易杭研的一篇對 iOS App 加固保護原理深度分析的好文。文中從如何對 App 破解出發,從以下 4 個大點闡述了 App 的加固原理:

  • 字串混淆
  • 類名、方法名混淆
  • 程式結構混淆加密
  • 反除錯、反注入等一些主動保護策略

? ? ? Playground driven development in Swift

文章詳細描述瞭如何去構建一個基於 Playground 的 App 開發環境,對於經常要開發 UI 介面的開發者來說,使用作者介紹的這一套流程,可以大大提高自己的開發效率。

? Codable vs. ObjectMapper

作者分析了 Codable 和 ObjectMapper 的區別,Codable 相對來說比較簡單易用,而 ObjectMapper 提供了更多高階功能,例如資料轉換,資料驗證,可讀性更強的錯誤資訊等等。並且作者也擴充套件了 Codable ,實現 ObjectMapper 的這幾個主要的 feature,讓我想起了之前看過的另一個專案 AnyCodable。想要擴充套件 Codable 但無從下手的同學可以考慮看看。

? Inspect your app’s Documents directory in the Files.app

小技巧,如果我們在 Info.plist 中設定了 LSSupportsOpeningDocumentsInPlace=YESUIFileSharingEnabled=YES,就能夠從蘋果官方的檔案管理器 Files 對 App 的 Documents 目錄進行檢視,更多資訊可參考 蘋果官方文件

? 網易HubbleData無埋點SDK在iOS端的設計與實現

這是一篇非常值得一看的文章,從程式碼埋點到視覺化埋點再到無埋點,層層遞進。更可貴的是,詳細介紹瞭如何利用aop的方式實現無埋點的整個思路,和解決的一系列問題。從思想到方法都有了。

? Reimplementation of Implicitly Unwrapped Optionals

為了提升型別檢查的一致性,Swift 的下個版本計劃對 ImplicitlyUnwrappedOptional 型別相關的一些操作進行重新實現,其實說到底所有的操作都是為了去掉 ImplicitlyUnwrappedOptional 型別,這樣可選值型別就剩 Optional<T>! 則只是一個操作符而已,不包含 ImplicitlyUnwrappedOptional 這個特殊型別的含義。不過小編看了下所有的改動,目測應該都是可以用程式碼遷移器搞定的,大家不用特別擔心下個版本需要做程式碼的大變動。

? Swift, Plist and Two Smoking Scripts

有沒有想過整個專案從前端到後端全部用 Swift 來開發?甚至包括指令碼?本文介紹了怎樣用 Swift 在十五分鐘內開發一個能夠幫助我們對專案設定進行檢查的 Build Phase 指令碼,值得一看。

工具

What's New in Swift 終極版

有人做了一個網站給 Swift,詳細介紹每個版本的更新內容,你還可以選擇具體的版本範圍,然後就能看到這中間更新了什麼。

音視訊

? App Builders 2018

App Builders Conference 是由來自歐洲各國的 Android 和 iOS 移動開發者一起舉辦的分享交流會。本次大會在瑞士舉行,目前 YouTube 上已經收錄有該大會的 26 個直播視訊,平均每個視訊約 30 mins,分享的內容從 Google AR 到 iOS 的 CoreML,從 Swift 到 App 架構,方方面面都有涉及。

其中本期週報中收錄的『A Better MVC』一文也在該會上進行了分享。

關注我們

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

老司機 iOS 週報 #17 | 2018-05-02

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

本期編輯

@沒故事的卓同學@四娘@mmoaay@享耳先森@EyreFree@Damonwong@折騰範兒_味精@張嘉夫@AidenRao@Parsifal@葉孤城@aaaron7@方秋枋

說明

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

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

相關文章