老司機 iOS 週報 #98 | 2020-01-06

老司機iOS週報發表於2020-01-06

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

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

新聞

RN 轉小程式引擎 Alita 2.0 正式釋出:基於 webpack 進行重構

@looping:近期 Alita 釋出了基於 webpack 進行重構後的 2.0 版本,帶來了諸多新特性,包括完善 npm 支援、包大小分析、一鍵小程式分包等等。Alita 本身侵入性很低,並不會對原有 ReactNative 開發方式造成太大影響。同時本文也從基本原理、2.0 版本新特性、效能優化這三個方面介紹了下 Alita。感興趣的同學可以進一步關注學習下。

新手推薦

? How to use scroll view in Interface Builder / Storyboard (Xcode 11)

@極速男孩:本文介紹瞭如何在 Xcode 11 的 Interface Builder 或者 Storyboard 中使用 scroll view。主要介紹瞭如何在 view controller 中使用 scroll view 並且設定它的約束和如何設定 scroll view 元素的約束並且如何通過設定當中元素的約束來自動控制 scroll view 的 Content view 的大小。

? SwiftUI learning curve in 2019

xiaofei86:今年 iOS 開發領域發生了巨大變化,我們擁有了 SwiftUI 框架。SwiftUI 是蘋果生態系統中用宣告式框架構建 App 的新方式。作者總結了學習 SwiftUI 需要的所有文章列表,包括基礎知識、佈局系統、架構、宣告式特性、動畫和互動、輔助功能、繪製自定義檢視總 28 篇文章,推薦給對 SwiftUI 感興趣的同學。

文章

? ? 手淘架構組最新實踐 | iOS基於靜態庫插樁的⼆進位制重排啟動優化

@satanwoo:啟動優化是個老生常談的問題了,但相關優化涉及的技術卻總是停滯不前。而 2019 年下半年抖音提出的二進位制重排方案給業界帶來了一股新的風潮來一些新鮮感。本文是來自手淘架構組的謝俊逸同學在二進位制重排方案的基礎上,針對原有方案的一些實踐限制,提出了一種基於靜態庫二進位制插樁的重排方案,對於大量應用元件化構建應用的團隊來說,是一個值得學習借鑑的好文章。對了,本文配合原有的抖音研發實踐:基於二進位制檔案重排的解決方案 APP 啟動速度提升超 15%更佳~

? ? APP 網路優化之 DNS 優化實踐

@Parsifal:網路優化一直是 App 效能優化中比較重要的一部分,而在網路優化中 DNS 優化又是相對重要的一塊。通常我們做 DNS 優化想要達到的目的有以下 3 個:

  • 降低 DNS 解析帶來的延遲
  • 預防 DNS 劫持
  • IP 做到伺服器動態部署

其中,“降低 DNS 解析帶來的延遲” 在 HTTP 2.0(從 1.1 開始 keep-alive 預設開啟,2.0 支援多路複用,大大提高了連結的可重用性和傳輸效率)時代影響已經比之前小很多,但 “預防 DNS 劫持” 和 “IP 做到伺服器動態部署” 這兩點問題依然可以用 IP 直連來解決。目前市面提供的類似服務主要有:阿里雲 HTTPDNS騰訊雲 HTTPDNS,其中需要解決的問題大同小異,兩家都在開發文件中有提及。本文則在這些問題的基礎上,補充了兩個實踐過程中遇到的問題。如果你之前從未了解過客戶端 DNS 優化相關內容,這篇文章可以較完善地為你釋疑;如果你之前已經有嘗試過,那麼也能通過這篇文章,看看他們實踐中遇到的問題。

? 立志欲堅不欲銳 - 2019 年小結

@J_Knight_:本文是冬瓜的 2019 年總結。本篇總結分別從社群貢獻(GitHub,部落格,公眾號,DissCode 演算法平臺),讀書,線上課程,演算法題幾個方面展開;在文章結尾處還分享了他的年度 OKR 並簡單介紹了他在抖音的工作。可以說這一年他在技術上的學習以及輸出都是非常高的,很值得同行學習。關於他的公眾號,有興趣的朋友可以從 2019 年文章彙總這篇文章中詳細瞭解。

? MANAGE YOUR IOS RESOURCES TYPE-SAFELY WITH R.SWIFT

@Damonwong:在開發 iOS 專案的時候,如果你想要用程式碼訪問一些資原始檔,通常情況下,你需要使用 magic strings 在執行時動態的查詢,這並不是一個十分安全的方式。

在這方面,Android 的設計就比 iOS 好很多,每個 Android 專案都有一個 R.java 檔案來解決 magic strings 的問題。也正是因為這個設計,iOS 這邊衍生出了 R.swift 這個庫,藉助 Swift 的特性,在編譯的時候就能及時的發現類似於資原始檔丟失的問題。

R.swift 類似還有一個庫叫 SwiftGen。這兩個庫大同小異,大家可以根據自己的專案實際情況來選擇。

? CocoaPods 1.9 新特性

@EyreFree:CocoaPods 是使用最廣泛的 iOS 專案依賴管理工具,相信大家都有使用過,在此不多做贅述。目前 CocoaPods 已經發布了 1.9.0.beta.2 版本,按照以往的節奏,相信很快就會發布正式版。本次的 1.9 版本除修復了大量 Bug 外,還新增了 XCFramework 支援、Podspec 的基於配置的依賴關係以及 Swift 版本變體等一系列新特性,快來點開文章提前預習一波吧。

? 9to5mac 年度回顧:Apple 在 2019 年全年釋出的所有產品

@張嘉夫:對於蘋果公司而言,2019 年是繁忙的一年,全年分發了無數的硬體和軟體版本。從 Mac 系列和 iPhone 11 Pro 的多個更新到 Apple Watch Series 5 和 AirPods Pro,Apple 在 2019 年對其所有產品系列進行了更新和釋出。本文是 9to5mac 對蘋果在 2019 年釋出的所有內容(包括軟體和硬體)的一個回顧。

? Debugging with Swift Combine Framework

@zvving:響應式程式設計一貫有除錯不便的問題,本文介紹基本的日誌列印、斷點除錯和圖表分析方法,幫助你更好的上手 Combine 開發。

? 向現有應用新增 Flutter

@CrazyCoderShi:隨著 Flutter 1.12的釋出,官方帶來了一項新功能 - Add-to-app, 通過建立 Flutter module 的方式,可以快速的給現有應用新增 Flutter 能力,全程體驗順滑如絲。自此,還有什麼理由說 Flutter 整合體驗差?。

工具

Publish

@四娘:Publish 是一個使用 Swift 編寫的靜態網站生成器,支援主題和外掛等自定義功能,前身是 SwiftBySundell 這個網站的生成工具,現在作者整理後將它開源了出來。

AppHost

@JimQ:一個輕量級的包託管網站,主要用於 iOS 和 Android 的包管理,作用類似於 fir.im,不同之處是可以自由部署在內網,方便了公司專案保密,並且程式碼開源,方便根據各自需求進行定製化開發。

內推

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

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

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

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

關注我們

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

老司機 iOS 週報 #98 | 2020-01-06

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

說明

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

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

相關文章