老司機 iOS 週報 #97 | 2019-12-30

老司機iOS週報發表於2019-12-30

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

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

新聞

? Updating Apps that Use Web Views

@anotheren:如果你還在使用 UIWebView, Apple 已經給你下了最後通牒。自 2020 年 4 月起,使用 UIWebView 的新應用將無法提交到 App Store;自 2020 年 12 月起,相關舊應用也將無法提交更新。趕緊計劃遷移到 WKWebView 吧。

新手推薦

? ? Clean Architecture and MVVM on iOS

@極速男孩:本文介紹瞭如何在 iOS 中使用 MVVM 架構,MVVM 各個部分如何在 iOS 中發揮作用,以及如何保持一個清晰的檔案結構。

文章

? ? 系列文章:多地圖源業務向地圖控制元件開發思路

@享耳先森:如果你在開發地圖相關 App,應該知道服務商地圖質量各有長短,所以,最好是能適配多種地圖,讓使用者選擇。

這系列文章介紹瞭如何對地圖服務進行抽象,可以方便的切換地圖服務,同時在地圖之上封裝了統一的 UI 互動。

? ? 使用者端智慧的應用實踐

@蓮叔:端智慧是近年來客戶端除了動態化之外為數不多的技術新方向。端智慧,顧名思義就是在客戶端上執行機器學習/深度學習的演算法。傳統的端智慧多半都 focus 在解決圖形影象領域、NLP 方向的任務,比如 Apple 的 CoreML 與 Vision 框架。最近兩年國內的網際網路公司紛紛開始嘗試拓寬端智慧的應用範疇,比如端側推薦重排等。目前端智慧的瓶頸其實並不在於模型如何裁剪,演算法如何提效,更多的在於合適的業務場景+合適的特徵選取(也就是訓練資料)。bang 的這篇文章介紹了他的團隊在端智慧上的一些業務場景嘗試,對於希望落地端智慧應用的同學與團隊都非常有參考價值。文章舉了金額推薦、智慧 push 和本地處理三個場景,並且給出了落地過程中遇到的一些問題。從另一個側面反映了目前端智慧仍然處於不斷探索的階段,還沒有到大規模普及與應用,但仍然蘊含著巨大的空間。

? ? 你的 App 在 iOS 13 上被卡死了嗎?

@Parsifal:一篇由 OpenUDID + UIPasteboard + iOS 13 上引發 App 卡死問題的深入分析好文。全文並不侷限於這個問題,而是同時總結了排查這個問題過程中用到的方方面面知識技巧,十分值得我們借鑑。看完這篇文章,除了學習到排查複雜小概率問題的技巧,你還會對以下幾個知識點有一個更清楚的認識。

  • Bugly 等第三方崩潰日誌收集服務侷限性在哪裡?
  • 在第三方後臺無法捕獲崩潰日誌時,我們可以做些什麼?
  • 如何分別在有 dSYM 檔案和無 dSYM 檔案時解析崩潰日誌?
  • UIPasteboard 是一個系統共享的服務,那麼它的資料同步是如何做的?
  • UDID 被蘋果禁用後的這麼長時間,社群使用 UDID 的方式有著怎麼樣的變化?

? UserDefaults Access via Property Wrappers Is Worse Than You Might Think

@老峰:本文討論了文章 The Advanced Guide to UserDefaults in Swift 使用 Property Wrappers 封裝 UserDefaults 可能存在多個地方定義不同初始值的問題,並給出了更優的方案 SwiftyUserDefaults

? No space left on device: Testing low storage scenarios

@Parsifal:如果你的 App 大量用到持久化儲存技術,那麼儲存空間不足的錯誤應該是比較常見的。本文提出了一種利用模擬器重現儲存空間不足的技巧,讓我們可以輕鬆在該場景下測試和除錯自己的 App。

工具

Proxyman:網路除錯工具

@Jimq:Proxyman 是一款 macOS 上的網路除錯工具,使用 Swift 和 C++ 編寫,美觀高效功能強大,免費版就能使用抓包 / rewrite / breakpoint 等基本功能,推薦一試。PS:Setapp 也包含了這個 App。

程式碼

R.swift

@zvving:類似於 Android 開發中的 R 類,為 image、font、localized-string 等資源提供強型別的訪問方式,如:

let icon = R.image.settingsIcon()
let font = R.font.sanFrancisco(size: 42)
let string = R.string.localizable.welcomeWithName("Arthur Dent")
複製程式碼

在減少字串硬編碼的同時,帶來程式碼自動完成、編譯期檢查等功能,推薦一試。

HomeKit Accessory Development Kit (ADK)

@老驢:蘋果放出了 HomeKit 附件開發包,其縮寫為 HomeKit ADK。

此 SDK 主要面向開發 HomeKit 相關的裝置的開發者,提供了快速開發 HomeKit 相關功能的 API。需要注意的是,HomeKit ADK 只能用於非商用用途開發和使用,若進行商業開發,則需要註冊 MFI,然後使用對應的商業版本的 SDK。

KeyedCodable

@四娘:KeyedCodable 是一個簡化 Codable 邏輯的庫,之前一些自定義的邏輯都需要通過手寫 decode 和 encode 去完成,例如巢狀,預設值和自定義編碼策略等,現在使用這個庫就即可自動完成。

Hippy

@looping:Hippy 是由騰訊 QQ 瀏覽器部門發起,針對前端開發者推出的跨端解決方案,它同時支援 React 和 Vue 兩種前端主流框架,並且已經在 GitHub 上正式開源。

Hippy 在騰訊內部已經形成一套完整生態,包括對 GCanvas、Lottie、SVG 等都有相應元件封裝,同時騰訊內部自研的 Hippy 業務元件庫、高效能圖形庫、異常上報(支援 Sentry)等,也會在未來逐步對外開放。

內推

美團點評平臺事業部業務研發中心技術架構組的招聘高階 iOS 開發,負責美團 App 部跨平臺動態化佈局專案iOS端SDK開發和維護,參與動態化佈局專案編譯指令碼開發與維護。我們需要你 3 年或以上 iOS 開發經驗,紮實的 Objective-C 語言基礎,熟練掌握iOS開發、測試、調優等技術,以及相關工具的使用,積極主動,有良好的團隊合作精神和強烈的責任感,對移動產品有濃厚興趣及見解。詳情聯絡美團點評 iOS 高階工程師 SketchK:zhangsiqi1988@gmail.com。

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

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

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

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

關注我們

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

老司機 iOS 週報 #97 | 2019-12-30

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

說明

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

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

相關文章