老司機 iOS 週報 #58 | 2019-03-11

老司機iOS週報發表於2019-03-11

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

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

福利

? 移動開發唱衰,iOS 開發者如何涅槃重生?

戴銘,絕對是 iOS 屆的資深老司機,GMTC 全球大前端技術大會的專題出品人及講師之一,前滴滴出行技術專家,在元件化方案落地、工程動態化、大前端建設、應用開發階段效率的提升、上線後各種難點問題的解決等方面的經驗非常豐富。極客時間的品牌我一向比較認可,專欄品質很有保障,《iOS 開發高手課》也是戴銘老師對移動開發這麼些年沉澱下來的技術,詳細而系統的輸出。我看了目錄,主要分為基礎、應用開發、原理、前端與原生共舞的 4 個模組,你將獲得:

1、資深 iOS 開發專家為你構建完整知識脈絡 2、領略專家級大型開發專案,增強面試競爭力 3、深入 iOS 核心技術與原理,從源頭上掌控新技術 4、精美手繪圖解知識點幫助你輕鬆學習

週報編輯均已購買,來不及了快上車!!原價 ¥99,上新優惠 ¥68,趕快掃碼直接訂閱。通過以下連結購買的讀者微信新增 AwayZ_T 或 Damonwong2,我們會返現 10元小紅包,並邀請你進入我們老司機週報的讀者群,一起學習戴銘老師的 iOS 進階教程~

點我試讀或購買「iOS 開發高手課」,快上車~

另外,我們在微博上發起了一個福利活動,贈送老司機定製 Logo T 恤衫和「iOS 開發高手課」,歡迎大家點我參與~

新聞

? 剛剛,阿里宣佈開源 Flutter 應用框架 Fish Redux!

閒魚團隊是國內最早開始大規模使用 Flutter 的大公司團隊,也是國內現在 Flutter 風潮的引領者。

在上週,閒魚團隊剛剛開源了名為 Fish Redux 的基於 Redux 資料管理的組裝式 Flutter 應用框架,旨在解決大型複雜應用中的頁面狀態管理以及 UI 元件的複用等難點。

對於想要實踐 Flutter 於大型應用的團隊及開發者們來說,值得學習參考。

文章

? ? 庖丁解牛!深入剖析 React Native 下一代架構重構

去年六月,Facebook 宣佈要重構 React Native。時至今日,開發團隊取得的一些進展已經非常值得我們期待和持續關注了。本文通過分析原始碼仔細介紹了 RN 的重構設計思路和後續業務開發適配注意點,解釋了新技術方案在解決效能問題上的優勢,同時描述了官方對以後元件開發維護的一些規劃,對保持社群的活躍性、提升框架整合使用體驗和加快元件迭代速度等都有很大的幫助。

? 沒有 AST, IDE 中的錯誤提示、自動補全、重構、語法檢查......都玩不轉了

當下的軟體開發,實際上並不需要我們瞭解許多編譯原理相關的知識。但編譯原理作為一門計算機經久不衰的基礎課程,自然有它存在的價值。其中的 parser 部分就值得好好看一看,這會在我們遇到相關的需求時候,如排版佈局,想自己搞一套 DSL 等都會很有幫助。本文講了 AST (抽象語法樹)是如何工作的,雖然是以 JavaScript 的程式碼舉例,但原理其實是通用的。

? How to integrate image recognition in iOS apps

本文介紹瞭如何在 iOS 應用程式中整合影像識別,文章作者介紹如何使用 Microsoft Custom Vision 構建 CoreML 模型,以便能夠識別照片中的物件以及如何在 iOS 應用程式中使用它。您需要對 iOS 開發和 Swift 有基本的瞭解才能閱讀這篇文章。

? The Xcode Build System

作者從 Xcode 的編譯系統元件( 外掛,平臺元件,工具鏈 ),工程檔案( pbxproj 檔案,檔案引用 ) 編譯環境( 編譯設定,Target,xccofig 檔案 ),編譯輸出( 輸出路徑,輸出檔案 )等內容比較全面地介紹了 Xcode 的編譯系統。讀者閱讀後可以對 Xcode 的編譯系統有更加全面的認識。

? Swift Code Formatters

最近幾天,Swift 社群一直在討論 Tony AllevatoDave Abrahams 關於 Swift 編碼風格指南和格式化工具 的提案。

Mattt 專門在 NSHipster 撰文對社群現有程式碼格式化工具進行比較,包含 SwiftFormatSwiftLintPrettier with Swift Pluginswift-format (proposed),分別從格式化結果及效率兩個角度進行對比。

? 從原始碼解析 Swift 弱引用

弱引用的深層實現機制在 Objective-C 中,就讓很多同學覺得雲裡霧裡,那在 Swift 中又如何呢?和 Objective-C 中的實現又有何異同呢?作者通過研讀原始碼,給我們深入剖析了 Swift 弱引用機制的實現方式,並比較了和 Objective-C 中的異同,非常值得我們借鑑學習。相關閱讀:Friday Q&A 2017-09-22: Swift 4 Weak References

? 一步一步教你實現 iOS 音訊頻譜動畫

當我們在聽音樂的時候,總能看到音訊頻譜隨著優美的音樂而跳動,那麼有沒想過這樣的動畫如何實現?

本文主要介紹了脈衝編碼調製(PCM)基本音訊處理概念;AVAudioEngine 音訊播放和 AVAudioPCMBuffer 頻譜資料的獲取、計算、處理、音訊動畫繪製;頻譜動畫優化:鋸齒消除、閃動優化等。

作者通過一步步探索最終實現完美的音訊頻譜動畫,感興趣的同學點選這裡閱讀原始碼,相信一定會有所收穫。

? 已開源|碼上用它開始 Flutter 混合開發——FlutterBoost

鹹魚團隊在國內 Flutter 的探索上一直以來都是走在業界前列。近期,鹹魚技術團隊開源了 Flutter 的混合開發框架 FlutterBoost。我們知道,在現有的工程中直接換成 Flutter 開發具有很高的成本以及風險,畢竟對於一些稍大些的工程,有些程式碼的業務邏輯已經很複雜了。所以,鹹魚團隊基於對現狀的考慮,採用 Native -> Flutter 漸進式的遷移方式,並將框架開源,對於想要在舊有工程上採用 Flutter 的同學可以看一下。

? ? How to build a simple tracker blocker for iOS

跨網站追蹤是一種廣告商用於蒐集使用者資訊的方式,Apple 作為一家注重使用者隱私的公司,在 iOS 裡內建了 Content Blocker 等功能幫助我們不被追蹤。

這篇文章就教我們如何使用 Content Blocker 和第三方黑名單來搭建一個反追蹤的外掛,並且還提供了相關的網站以便我們進行測試。

? Task-based concurrency in Swift

對一組有相互依賴的並行任務,OperationQueue,ReSwift,Future & Promise 都是常用的備選方案,但這些方案相對較重("heavy-handed"),作者基於 DispatchGroup 封裝了一套輕量、簡潔的 "Task-based" 的解決方案,推薦閱讀。

工具

Localization in Swift like a Pro

你是否仍在用幾年前的方式進行本地化?你知道有更好的方法嗎?本地化一直令人痛苦,但閱讀這篇文章後,你會發現它並不是那麼糟糕。本地化的同步更新 Xcode 並不支援,但你可以使用 BartyCrouchSwiftGen 這些工具來解救你。

XCSnippets

合理的使用程式碼片段可以有效提高你的 Coding 效率。XCSnippets 工具可以讓你使用命令列方便的將 .codesnippet 從 Git 倉庫安裝到 Xcode。你還可以使用作者開源的程式碼片段倉庫 XCUISnippets 或編寫並開源自己的程式碼片段。

程式碼

? MVVM-TemplateProject

用 Swift 實現 MVVM 的 Demo 專案,可以同時配合作者關於 MVVM 的 3 篇文章學習,適合新手入門。

  1. How to implement MVVM pattern in Swift from scratch
  2. Unit Testing your MVVM architecture in Swift
  3. How to integrate RxSwift in your MVVM architecture

Nantes

著名的 UILabel 替代庫 TTTAttributedLabel 的 Swift 復刻版,支援 UILabel 的及 TTTAttributedLabel 所增添的新特性,支援 iOS 8.0+。

音視訊

ggtalk | 如何(連續兩次)獲得 WWDC Scholarship

新的一期 ggtalk 邀請到了 @ApolloZhu 來聊聊 WWDC Scholarship,WWDC Scholarship 是蘋果的一個類似獎學金的獎項,申請的學生靠提交一個極具創意的 playground 的作品來參與評選,如果獲獎則可以獲得免費參加 WWDC 的機會,當然餐食和酒店也是包含了的。Apollo 目前還是高中生,但已經連續獲得兩次 WWDC Scholarship,這次分享裡他談了申請的一些技巧以及整個過程中有趣的體驗。對 WWDC 感興趣的童鞋不容錯過。

內推

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

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

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

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

關注我們

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

同時也支援了 RSS 訂閱:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。

本期編輯

@四娘@享耳先森@Damonwong@折騰範兒_味精@張嘉夫@Parsifal@aaaron7@kyo@tom510230@anotheren@水水@looping@老老老老老老老驢@小非86@邦ben@紅紙@含笑飲砒霜@JimQ@老峰@zvving@J_Knight_

說明

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

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

相關文章