老司機 iOS 週報 #29 | 2018-07-30

老司機iOS週報發表於2018-07-30

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

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

新聞

Mattt 和一些國內開發者一起重啟了 NSHipster.cn

自 Mattt 今年從蘋果離職並重新投入到開發社群後,先後建立了 @Flight-School 和重啟了 @NSHipster 的更新。而就在上週,有心的開發者會發現 NSHipster 的中文版倉庫也開始有更新了,Mattt 已經確認將會和中國開發者一起完成 NSHipster 的翻譯工作(詳見這裡)。目前一些舊的文章正在進行一些審校更新工作,相信新的文章也很快會完成翻譯更新。同時,也歡迎有能力和精力的開發者一起投入到 NSHipster.cn 更新維護中來!

文章

? Updating Strings For Swift 4.2

Swift 4.2 中的 String 只有一個屬性 characters 被標記為廢棄,因為從 Swift 4 開始 String 已經是集合型別,所以直接刪掉 characters 屬性即可。

一個改進是原來只有獲取第一個元素的方法: first(where predicate: (Character) throws -> Bool),在 4.2 中增加了獲取最後一個元素的相關方法: last(where predicate: (Character) throws -> Bool), lastInex(of: Character)。為了方法名稱的統一,原來的index(of: Character)重新命名為 firstIndex(of: Character) ,但是原來的方法名依然可以正常使用,推測下一個大版本 index(of: Character) 會被標記為廢棄。

? Snapshot Testing on iOS

Snapshot Testing on iOS (快照測試)是這樣一個想法:拍攝使用者介面的螢幕截圖並將其儲存為參考影像。然後進行單元測試以獲取同一 UI 的螢幕截圖並將其與參考影像進行比較, 基於此想法應運而生的工具有很多,其中由 Facebook 建立 Uber 維護的 iOSSnapshotTestCase 測試框架使這個過程變得非常容易 。 本文作者萌生了在專案中使用快照測試的想法而發起了這個關於快照測試的的討論,並且整理出了一系列優缺點,對快照測試感興趣的朋友可以關注下哦~

? ? RESTful API Design — Step By Step Guide

Restful API 的設計對於很多客戶端工程師來說可能有一點陌生,但其實這些設計原則不僅僅可以用來指導服務端介面的設計,客戶端的一些公用元件的設計依然可以參考其規範來提升可理解性、可複用、可擴充套件性等方面。本文首先介紹了 restful 介面實踐的標杆 - Amazon 的一些經驗,然後重點介紹了幾個設計的關鍵原則,其中提到,優先使用名詞,而不是動詞來命名介面,相信是絕大多數從 C 語言和麵向過程程式設計開始入門的程式設計師經常犯的錯誤。文章措辭簡練,讀起來很輕鬆,舉例也很生動,推薦閱讀。

? iOS 啟動時間優化

標題雖短但這篇文章卻是小編閱讀過對 iOS App 啟動時間分析和優化類最為系統透徹的。該文從 App 啟動的兩個階段 - 『pre-main 階段(點選桌面圖示到 main 函式被系統呼叫這段時間)』和『main 階段』分別進行原理剖析,並對一些涉及到的概念進行釋疑,而後針對剖析出的可優化點結合實際專案進行優化實踐。其中 pre-main 階段的優化主要基於 linkmap 分析各個靜態庫依賴包大小並針對性瘦身,而 main 階段的優化主要是減少阻塞主執行緒的任務。

整篇文章閱讀下來,會對 iOS 中 App 的啟動有一個很清晰深刻的認識,對我們自己動手進行啟動時間優化很有參考意義。

? Swift HTTP Server 開發體驗

從 Swift 開源並支援 Linux 執行之後,Swift Server API 趨熱,先後出現了 PerfectVaporKituraZewo 幾個框架。

本文作者使用 Perfect 開發了一個 以 MySQL 和 HDFS 作為支撐,應用了包含 Web 服務、JSON 介面服務、以及基於 Socket 的檔案傳輸和視訊直播流服務的專案 給大家講解開發體驗及部署過程,並介紹如何接入第三方服務(以 MySQLHDFS 舉例)。

? Custom Types for Powerful Matching

我們經常會遇到關於 url 解析的場景,輸入一個 url,輸出跳轉的目的地,來實現類似路由的功能。作者利用了 Swift 的強型別、模式匹配和運算子過載的特性,給出了一個相對優雅的解決方案,邏輯清晰易懂,相信會對大家會有所啟發。

? Conditional Compilation in Swift, Part 1

本文講述了 Swift 中方的條件編譯。當然首先是傳統的方法 arch(),作者對各個引數都做了詳細的介紹。不過隨著 Swift 4.1 的到來,你更應該瞭解一下方便好用的 targetEnvironment()(SE-0190)。其次是使用配置檔案(.xcconfig),這個方式其實被 CocoaPods 大量使用。作者也用示例做出了詳細的介紹,同學們不妨也在自己的工程中試一試。

? 讓你的 Swift 程式碼保持良好的向後相容性

重構是程式碼構建過程中不可避免的一個階段,儘可能保持 API 的穩定對於平穩的遷移是一件很重要的事情,這周的 Swift Sundell 就介紹了一些保持語法穩定的重構技巧,Swift 由於其良好的語法設計,可以在修改介面的同時保持語法的向後相容性,這篇文章裡挖掘了很多相關的語法特性,強烈推薦大家閱讀!!!

? Better iOS projects: Getting (nearly) rid of Xcodeproject - A (not so) short Introduction to Xcodegen

在我們日常開發中,絕大部分情況都是手動建立和維護.xcodeproj檔案。但是在團隊開發中,我們經常需要處理專案檔案衝突,維護依賴也是一件比較麻煩的事情。本文則是介紹了Xcodegen這一工具。通過建立一個描述檔案,就可以自動生成專案檔案,和管理依賴。

? Password Rules / UITextInputPasswordRules

自 iOS 8 以來,Safari AutoFill 已經能夠生成隨機密碼,但只能生成字元加數字(頂多中間補點橫槓)。Apple 在 iOS 12 中的 Automatic Strong Passwords 解決了這個問題,其中包括一個新的 UITextInputPasswordRules API,以及其他一些密碼管理功能,包括驗證碼自動填充和聯合身份驗證。UITextInputPasswordRules API 可以用來指定服務需要的特定密碼規則,例如必須的字元種類、允許的字元種類、允許的最大連續字元數、最小密碼長度、最大密碼長度。但這個 API 是 String Base 的,可以使用更加安全的列舉形式改造一下。

?NSHipster.cn:WKWebView

Mattt 重啟了 NSHipster.cn 之後,更新了一篇關於 WKWebView 的舊文,列舉 WKWebView 與 UIWebView API 差異,還有一些 iOS 11 之後的新特性,包括內容過濾規則,瀏覽器截圖等等。本次 Mattt 更新文章一大原因就是 iOS 12 蘋果將 UIWebView 標記為 deprecated ,還未盡快升級 WKWebView 的朋友們,可以看看 Mattt 的這篇文章複習一下。

程式碼

DBDebugToolkit | Wormholy | CocoaDebug | GodEye

最早看到監控或是 Debug 類 SDK 完整功能的實現是子循的 Godeye ,最近似乎此類 SDK 又重新被大家關注起來了。

這裡提供了幾個最近比較有代表性的庫的連結,大家可以瞭解一下。

iOS面試之道

故胤道長和唐巧合著的這本《iOS面試之道》終於在長時間的等待後上架了。

唐巧從他多年招聘經驗出發,給出了諸多面試流程,簡歷修改,Offer 選擇的知識,而故胤道長則是從他多年在北美的 iOS 面試經驗出發,給出了具體的演算法及 iOS 基礎指示的準備。

相信讀完本書,您一定能對 iOS 面試有一個更深刻的理解和認識。

音視訊

? Appdevcon 視訊

Appdevcon 是由 App 開發者組織,面向 App 開發者的技術大會,它的前身是 mdevcon。他們目前已經把今年大會上的所有演講視訊都上傳到了 vimeo,供大家免費觀看學習。當然也可以對照日程表,選自己感興趣的主題看。

內推

北京-螞蟻金服 招iOS/安卓/前端開發

螞蟻金服招聘,負責支付寶會員及帳號業務線,地點北京國貿,金臺夕照地鐵站出口 100 米。雖然招聘連結只給了 iOS 的 JD,但前端/安卓/iOS 都要,要求相近。有興趣的同學歡迎將簡歷傳送到:weijing.wdf@alibaba-inc.com / weijing.wdf@antfin.com (同一個郵箱) 或這微博私信 @折騰範兒_味精 瞭解情況。

編輯內推

關注我們

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

老司機 iOS 週報 #29 | 2018-07-30

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

本期編輯

@沒故事的卓同學@四娘@享耳先森@Damonwong@折騰範兒_味精@張嘉夫@AidenRao@Parsifal@aaaron7@方秋枋kyotom510230anotheren水水looping@JasonYuh@老老老老老老老驢

說明

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

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

相關文章