老司機 iOS 週報 #75| 2019-07-15

老司機iOS週報發表於2019-07-15

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

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

文章

? 為什麼Flutter是跨平臺開發的終極之選

@CrazyCoderShi:跨平臺開發是當下最受歡迎、應用最廣泛的框架之一。能實現跨平臺開發的框架也五花八門,讓人眼花繚亂。但目前最耀眼的非 Flutter 莫屬。本文對 Flutter 進行了多個方面的分析,來闡述為何 Flutter 是目前跨平臺開發的終極之選。

  • 什麼是 Flutter
  • Flutter 特性
  • Flutter 構建工具
  • 使用了 Flutter 的熱門 app

? ? 基於小程式技術棧的微信客戶端跨平臺實踐

@蓮叔:跨平臺是今年熱點,本文簡單講述了微信使用小程式技術棧的跨平臺框架演進之路,並且先後通過 lvcpp 以及 flutter 改造渲染底層來提升整體表現的效能。今年使用 flutter 渲染層+自定義上層 DSL 的嘗試越來越多,不得不說是比較創新的一個思路,畢竟渲染層跨平臺才是真正意義的跨平臺。

? Web 和移動端需要掌握的佈局方式 - Flexbox

@享耳先森:佈局一直是使用者端開發的重點,Flexbox 佈局解決了原來 CSS 盒子模型的一些不便之處。 Flexbox 已不止用於 CSS:如 Android 的 FlexboxLayout、ReactNative 所使用的 yoga,都支援 Flexbox。本文淺顯的介紹了 Flexbox 的基本用法,建議閱讀。

? ? 關於iOS離屏渲染的深入研究

@老峰:在平時的 iOS 面試中,我們經常會考察有關離屏渲染(Offscreen rendering)的知識點。一般來說,絕大多數人都能答出“圓角、mask、陰影會觸發離屏渲染”,但是也僅止於此。

本文來自即刻技術團隊,從 iOS 渲染架構開始深入的介紹了離屏渲染定義、常見離屏渲染場景、離屏渲染的效能影響,以及即刻團隊對如何正確使用離屏渲染的思考、渲染效能的優化實踐心得。

推薦閱讀:

? Swift vs Flutter - A side by side comparison for iOS development [Infographic]

@張嘉夫:在這篇文章裡,作者逐一對比了 Flutter 和原生 iOS App(Swift)之間的差異。為了比較,作者構建了兩個完全相同的 app,幫助你選擇更符合你的需求的平臺。具體來說,作者比較了兩個平臺的建立流程、構建時間、重新載入、Profiling、輔助功能、持續整合、App 尺寸等方面。如果覺得文章太長,也可以直接看文末的對比圖。

? ? iOS 自動化測試標籤生成工具接入指南

@水水TBUIAutoTest 可以幫開發人員生成UI 控制元件的標籤,便於自動化測試。只需一行程式碼或一個配置,幾乎所有的 iOS Native UI 都會在執行時生成一個頁面內唯一且不變的標籤。不僅節省了開發人員手動為每個 UI 控制元件加標籤的時間,也節省了測試人員與開發人員的溝通成本。目前已經有幾十款 App 接入,其中包含 QQ、今日頭條、興趣部落、NOW直播等,有興趣的讀者可以嘗試接入或學習實現哦~

? 給 React Native 開發者的 Flutter 指南

@looping:本長文分為上下兩篇,從基本語法到佈局動畫,通過跟 React Native 作對比來幫助更多 RN 開發者快速入門 Flutter 開發。同時本文所列的一些基本概念和問題可以滿足平時開發的大部分需求,可作日常開發參考,建議收藏。

? Swift Property Wrappers

@Damonwong:要說 Swift 5.1 最期待的特性,那就非 Swift Property Wrappers 莫屬了,把原先相容 Objective-C 的 @ 終於解放出來了,賦予了更多能力。NSHipster 的這篇文章就很好的解釋了 Swift Property Wrappers 是什麼以及可以怎麼用。大概列舉了一下幾個用處:

  • 約束變數值
  • 修正輸入的值。比如過濾輸入值中的空格。
  • 修正比較邏輯。比如忽略字元大小寫進行比較。
  • 記錄值的變化

當然還有一些限制,比如無法參與錯誤處理、不能被別名、多個 Property Wrappers 難以組合、第一型別不能直接依賴 Property Wrappers、文件寫起來很難、使 Swift 更加的複雜等等。

? UIStackView

@zvving:早在 iOS9 蘋果就引入 UIStackView 來支援類似 Flexbox 的容器佈局概念,最新發布的 SwfitUI 中也有對應 HStack、VStack、ZStack 的定義。如果你還沒使用過這一簡單而又靈活的佈局方式,強烈推薦 NShipster 剛釋出的這篇入門文章。

工具

UIKit equivalent in SwiftUI

@Parsifal:SwiftUI 吸引了眾多開發者嘗試,這個網站整理了關於新手入門 SwiftUI 需要了解的一系列東西。包含:

  • SwiftUI 的高頻 FAQ
  • UIKit 與 SwiftUI 的元件對照表
  • SwiftUI 檢視和控制元件簡單介紹和使用
  • SwiftUI 複雜佈局介紹和使用
  • 如何在 SwiftUI 中整合 UIKit 元件
  • 如何在 UIKit 中整合 SwiftUI 元件
  • 優質學習資源連結

如果你剛接觸 SwiftUI,這個網站可以幫你更快速地掌握基於 SwiftUI 的 App 開發,也可以作為平常開發中的速查表使用。

由喜歡瞎倒騰的 Liaoworking 推薦

Visual-Regular-Expression

@含笑飲砒霜Visual-Regular-Expression 是使用 Swift 實現的正則解析引擎,將解析結果轉換成 NFA,並動態展示每一步的匹配過程。它可以幫助你更好的理解正則和 NFA 的執行原理。

CocoaPods 歷險 - Resolver 仲裁入口解析

@xiaofei86:在系列文章 CocoaPods 歷險 - 總覽 中我們得知了 CocoaPods 元件的構成和職責,以及 pod install 命令執行後 prepare、resolve_dependencies、download_dependencies、validate_targets、generate_pods_project 過程的總覽。其中,resolve_dependencies 過程中包含了 Resolver 的入口過程以及 Molinillo 仲裁演算法,本篇文章則以 入口過程的解析為主題展開。後續會具體深入到 Molinillo 圖演算法中去認識仲裁流程。

程式碼

Swift-30-Projects/Project 04 - TodoTDD

@Parsifal:iOS 專家故胤道長 在讀完 Test-Driven iOS Development with Swift 4 一書後嘗試寫了個 ToDoList 的 Demo App 來應用這門技術。這個簡單的例子包含了如何寫單元測試、UI 測試、網路層測試和資料層測試等等。整個 App 的測試覆蓋率達到了 91.9%。

Swift-30-Projects故胤道長 在維護的一個基於 Swift 的開源倉庫,內容包含如何使用 Swift 開發常規 iOS App、各類開源框架、設計模式以及 TDD 等。如果你正在入門學習 Swift,這個倉庫可以幫你更快了解到 Swift 老手們是如何使用 Swift 開發 App 的。

關於 TDD 的入門,可以參考週報 26 期推薦過的 Test Driven Development Tutorial for iOS: Getting Started

內推

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

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

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

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

關注我們

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

老司機 iOS 週報 #75| 2019-07-15

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

說明

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

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

相關文章