老司機 iOS 週報 #49 | 2018-12-24

老司機iOS週報發表於2018-12-24

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

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

福利

? 我們發福利啦~

週報已經快陪伴大家走過一年的時間,非常感謝各位朋友的支援和厚愛。為了在 2019 年能更好地為大家服務,我們舉辦了一個問卷調查活動。在 12 月 27 日,我們會在參與問卷的朋友中選取合適的幾個人贈與學習大禮包和現金獎。至於獎品是什麼,大家可以在這條微博中瞭解,轉發還有額外的抽獎~我們渴望聽到你們的聲音!

新聞

? 週報支援郵件訂閱啦!

在接下來的週報釋出中,我們將會採用 GitHub 最新的 GitHub Release 特性進行,讀者朋友們可以到我們 GitHub 主頁 點選 watch -> 選擇 Release only 訂閱。之後每期週報釋出,你 GitHub 賬號關聯的郵箱就會收到我們的釋出郵件。

除新增的郵件模式之外,我們還提供了以下三種方式,大家可以按照自己的需求進行選擇:

Cydia 商店宣佈關閉

對 iOS 越獄有這些影響:

  • Saurik 決定關閉的僅僅只是 Cydia Store,也就是其中的支付系統,不會影響原有的安裝/解除安裝/管理應用程式的功能,免費或已經付費的應用,依舊可以進行下載。如果希望繼續購買付費應用,需要去其他儲存庫(如 Packix,Chariz 或 Dynastic Repo)進行下載
  • Saurik 決定關閉商店跟一個 BUG 有關,其可以通過使用者的 PayPal 帳戶啟用任意 Cydia Store 軟體包購買
  • Sileo 是 Cydia 的計劃替代品,但是其還在開發階段

文章

? ? 我從寫技術部落格中收穫到了什麼

相信不少程式設計師都有寫部落格/文章的習慣,或者正計劃寫,因為一方面可以總結和加深對技術的理解,另一方面也可以一定程度上增加一些知名度,這也有助於拿到更多的面試機會。但是,由於多數人工作畢竟已經很忙,真正能堅持寫下來的人卻不多。本文作者作為一個工作剛滿 3 年的開發者,但寫部落格卻有兩年半的時間了。筆者大概看了下,大概寫了有 50 多篇,可以說是很高產了。

本文分為三個部分

  • 寫技術部落格的歷程
  • 寫技術部落格的收穫
  • 回答一些朋友(粉絲)的一些關於寫部落格的幾個問題

在技術道路的探索上,每個人有每個人不同的方式,但對於任何一個人,堅持都是很重要也難得的品質。相信這篇文章能夠解答你心中的一些疑問。

? ? 從零開始學基於 ARKit 的 Unity3d 遊戲開發系列

作者王寒,國內首批 iOS 應⽤開發者,首批 VR 應⽤開發者,知乎專欄 笨貓學程式設計 作者。《Cocos2D權威指南》《虛擬現實-引領未來的人機互動革命》《Unity AR/VR開發:從新手到專家》的作者。

在本系列的教程中,作者帶大家一起學習,如何從零開始學習基於 ARKit 的 Unity3d 移動遊戲開發。全系列的教程都是基於實戰專案的,而且儘可能考慮到初學者可能會遇到的種種困難和障礙,可謂是手把手教學。

雖然名稱是零基礎,這個課程有個前提是本身對 Unity 及 3D 圖形有一定的瞭解,不是完全零基礎。當然也不必灰心,作者還貼心地為初學者準備了 iOS 入門課程系列AR-VR 入門課程系列

? TikTok(抖音國際版)逆向,全球的小姐姐們,我來啦!

在 iOS 日常的開發過程中我們通常會做一些競品分析或者研究競品某些功能點的實現方案,其中就需要使用到逆向技術。

本文作者以逆向抖音國際版為例,通過 Frida 砸殼,Hopper 靜態分析,配合 Reveal 動態分析,以及 Charles 抓包等一系列分析,編寫 Hook 程式碼完成逆向功能,最後實現突破地區限制、移除水印、日區視訊分享下載。文章思路清晰明瞭,帶我們理清了 iOS 逆向工程的整個分析過程。

? Mocking With Protocols in Swift

單元測試可以覆蓋我們的很多場景提高程式碼健壯性,但同時也有很多的程式碼其實是很難單元測試的,比如和資料相關的刪除操作,邏輯遲早都是會跑到的,不在開發階段就在上線後使用者使用階段,所以這類 “untestable code” 越多,軟體的質量就會越有問題。本文作者通過使用 Swift 的 Protocol 的相關特性,來巧妙的構造一些測試機制來測試一些沒那麼好寫單元測試的程式碼,並給出了一個具體的例子。值得借鑑!

? Data-Driven Table Views

UITableView 稱為所有 iOS 開發者最熟悉的控制元件並不為過,但 UITableView 存在程式碼重複、控制流過於複雜、違反依賴性倒置原則等痛點。文章前半部分指出了以上痛點,以及相對於 UITableView 來說 UITableViewController 所擁有的特性;後半部分針對上述痛點,基於 UITableViewController 逐步實現了一個基礎版的資料驅動業務的模型,設計輕量,用法簡潔,且方便擴充套件。

? Optimizing Images

圖片一直是 App 記憶體消耗大戶,本文從圖片的載入解壓呈現開始,特別介紹了列表型應用應該如何優化圖片記憶體問題。

? ? How to convert your Xcode plugins to Xcode extensions

Xcode 外掛和擴充套件,是我們日常開發中工具,作者針對它的發展做了以下幾點的總結:

  1. 什麼是外掛:只是一個型別的包,Xcode 啟動時的同時,會去載入指定的 Info.plist 檔案
  2. 優秀的外掛推薦:Alcatraz(包管理工具)、Xvim( vim 編輯器)、SCXcodeMiniMap(程式碼地圖皮膚)、FuzzyAutocompletePlugin(函式模糊搜尋)、KSImageNamed(影象名稱列表)、ColorSense(顏色轉換)、LinkedConsole(控制檯列印跳轉程式碼檔案)
  3. 外掛的製作:作者以 XmasXcodeColorSenseXcodeWay 的製作為例向我們展示瞭如何 Hook Xcode 的方法,以及如何與 Xcode 中 UI 元素進行互動
  4. 外掛的禁止:由於 2015 年末,XcodeGhost 事件,蘋果從 Xcode8 開始禁止載入外掛。當然,你可以通過 Xcode 重簽名這種方式去繞過蘋果的檢查,重新載入外掛
  5. 擴充套件的崛起:蘋果爸爸關上了一扇門,肯定會開一扇窗。從此 Xcode8 中的擴充套件進入了人們的視線當中。利用現有的 XcodeKit,去獲取文件資訊,修改當前文件內容,但是跟以前優秀的外掛相比,這個方式能實現的東西是在太少了。作者以 XcodeColorSense2 為例,向我們介紹了,如何去實現/除錯/安裝擴充套件。另外作者以 XcodeWay 向我們介紹瞭如何使用去用新的擴充套件去呼叫 Apple Script

? 美團開源 Graver 框架:用“雕刻”詮釋 iOS 端 UI 介面的高效渲染

美團開源了一款高效能的圖文混排渲染框架,其特點是整個頁面不使用 UIKit 的介面層級與佈局渲染,而是採用自己的圖文排版引擎,將所有元素繪製在一張 bitmap 上,然後輔助輕量級的互動控制。在這一整套自研的圖文排班引擎的支援下,可以做到網路下載/排版演算法/圖形渲染都通過非同步來進行控制,從而實現複雜介面的高效能渲染效果。

? Image Analysis Solutions for Mobile Apps

本文介紹了幾種移動端圖片分析的解決方案。其中包括:

  • 雲解決方案
  • Apple Vision API
  • OpenCV
  • BoofCV

我們希望,通過這篇文章,我們可以讓您更輕鬆找到最佳解決方案。

? Improving code testability with Swift protocols

Swift 是一門建議面向協議程式設計的語言,測試驅動是時下比較熱門的工作方式。因此,提升 Swift 的 protocol 可測試性就非常重要了。本文介紹了一些接地氣的方法

  • 用工廠模式來封裝 init 的細節
  • 通過 mock 的方式來只關注行為是否符合預期
  • 協議的設計要符合依賴倒置原則

工具

How to Add a Recent Items Folder to Your Mac's Dock

如何將最近開啟的專案資料夾新增到 Mac 的 Dock 中?相信工作中很多同學都有這個需求。本文作者就圖文並茂的給我們演示了整個過程,過程並不複雜,重要的是一勞永逸,可以有效提升我們日常的工作效率。

程式碼

iWeChat - 通過逆向還原和探索微信

iWeChat 專案作者希望通過逆向還原微信來學習構建微信用到的技術架構和互動設計,同時也想借此教會大家如何分析一款第三方 App。

專案介紹中羅列的逆向技巧、步驟和工具等,都是不錯的入門實戰教程,對逆向以及微信的設計感興趣的同學可以關注下。

音視訊

ggtalk | 和 Cee 聊聊如何拿 Google Offer

想來有很多程式設計師對 Google 非常憧憬,也一直希望能有機會去 Google 工作。 這期 Swiftgg 的 ggtalk 節目就和最近拿到 Google Offer 的翻譯組同學 Cee 聊了這個話題。主要集中在 Google 的面試流程,怎麼準備上。

有興趣的同學可以聽聽看,雖然北美的面試準備這些會和國內的有一些區別,但是依然值得了解一波。

如果對北美面試有興趣的同學們,還可以配合我們之前發的小專欄:北美軟體工程師面試簡單介紹 一起“食用”,效果更佳。

內推

關注我們

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

老司機 iOS 週報 #49 | 2018-12-24

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

本期編輯

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

說明

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

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

相關文章