老司機 iOS 週報 #5

老司機iOS週報發表於2019-03-03

歡迎 @張嘉夫@AidenRao 一起參與日後週報的編輯工作。

新聞

iOS 11.3 要來了,這是 iOS 11 目前為止最大的一次更新

蘋果近期釋出了 11.3 的開發者預覽版,也一起釋出了 Xcode 9.3 Beta,預計在春季正式釋出(3 月)。這是 iOS 11 目前為止最大的一次更新,主要增加了電池健康狀況檢視,ARKit 升級至 1.5 版本,Safari 支援 service worker,以及其他很多小改進。

iOS 11.2.5 推送,Homepod 開始預購

蘋果公司正式推送了 iOS 11.2.5 正式版更新,該版本加入了對 HomePod 智慧音響的支援,讓其可以通過Siri朗讀新聞(僅限美國、英國和澳大利亞)。此次更新的版本依然以修復 Bug 和安全漏洞為主。

同時 HomePod 也公佈了上市時間,宣佈在 2 月 9 日發售,1 月 26 日開始預購,首發國家只有美國、英國、澳大利亞。今年春季在法國和德國推出。但何時登陸中國市場目前尚未得知。

Apple’s augmented reality tool kit can now detect walls and 2D images in beta

ARKit 釋出了一個重要的小版本更新:支援了垂直面檢測,可以檢測牆壁;同時也改善了對不規則水平面的識別;整體的追蹤速度和精確性都得到了提高;呈現給使用者的視訊流也從 720p 提升到了 1080p,讓 AR 體驗更加真實。此外還有一個不顯眼、但很有想象空間的更新是基於計算機視覺的內建 2D 影像識別,能夠識別牆上的海報或畫作等,可以用於判斷場景中的位置,增加 AR 體驗的連續性。 這一系列更新給 ARKit 應用帶來了更多的想象空間,雖然 ARKit 目前的表現有些言過於實,但隨著 Apple 更多這樣令人驚喜的迭代,相信 AR 應用真正改變人們生活的那一天終會到來。

漏洞預警 | iOS WebView 跨域訪問漏洞

早先被證實發生在安卓上的 File 協議跨域訪問漏洞被確認 iOS 也存在,allowFileAccessFromFileURLsWebKitAllowUniversalAccessFromFileURLs 2 個開關控制用於允許 File:// 協議開啟本地頁面時任意訪問本地路徑檔案與其他網路資源,這兩個開關在UIWebView預設為開啟狀態,因此存在漏洞問題,WKWebView 預設關閉,無風險,但自行開啟 allowFileAccessFromFileURLs 的一樣存在風險(很多載入離線網頁的部落格文章教人開啟這開關),解決辦法:遷移至 WKWebView 並且確保不自行開啟開關。

小程式支援跳轉 App 了

對於開發人員來說,相比新聞本身,更需要關注的是開啟 App 以及 App 連結分享到微信開啟小程式的程式碼怎麼寫?有興趣或者已經有需求的童鞋可以參考這兩個連結進行實踐。

Swift 官方論壇遷移完成啦!!!

這周 Swift 論壇終於完成了遷移,對於 Swift 開發或者是細節決策感興趣的人,可以去看看之前那些功能的討論,例如 Swift 4.1 裡新引入的“舊“成員 compactMap,或者是新的幾個提案。

文章

YYCache 原始碼解析

YYCache 是知名的 key-value 執行緒安全、高效能快取元件。@J_Knight_ 從使用方法、架構設計、程式碼講解三個角度詳細的分析了 YYCache 的實現。

函數語言程式設計聖經

知名公眾號“碼農翻身”老劉繼《物件導向聖經》之後的又一力作《函數語言程式設計聖經》,在這篇文章裡,神五天創造不變數、純函式、遞迴、高階函式,讓上帝為你解釋函數語言程式設計發展的來龍去脈,以及為什麼函式式世界的程式設計師每週能休息兩天。

Weex + Ui – Weex Conf 2018

介紹了 weex 在飛豬的實踐經驗,在飛豬使用 weex 後:首屏可用時間降級 68、Bundle大小直接減少了 73%,由於體驗變好變快、讓我們頁面轉化率居然提升了 14.5%。也分享了 Weex 頁面在飛豬、手淘、支付寶進行多端投放的思路。

最後介紹了 weex 業務在阿里集團使用過程中產生 weex-ui 開源庫的過程。

JS 在微信、微博、QQ、Safari 喚起 App 的解決方案

經過長時間的實驗,總結微博、微信、QQ、Safari 在 iOS 及安卓平臺,喚起 APP 成功及失敗的解決方案。

實現使用者點選 H5 頁面的開啟 App 或者下載按鈕,如果使用者已經安裝了 App,則根據業務跳轉到相應的 Native 頁面,如果使用者沒有安裝該應用,則跳轉 AppStore 或者應用市場去下載 App。

2018 iOS 社招面試經驗

Offer 收割機手拿阿里、滴滴、美團等六家 offer,來分享自己的複習資料、面試遇到的知識點、以及面試準備方式,並介紹面試的各公司的流程和風格,本文需要付費才能閱讀完整文章。

物件導向的 JavaScript 程式設計:原理與實踐

如果你是一個剛接觸 JS 的其他語言開發者(比如作為一個客戶端對現在的大前端方向有濃厚興趣),看到 JS 的物件導向程式設計一定覺得詭異無比無法理解,那麼看看這篇有助於幫你解惑。

實現一個 JavaScriptCore 的 debugger —— iOS 篇

這篇文章裡教你如何在 iOS App 裡親自實現一個 JS 的 debugger,首先教你如何用 JavaScriptCore 的原始碼在專案中 build 起來,然後繼承 JSC:Debugger 重新實現一個 MyDebugger,這樣就可以自行定義 debug 能力了,可以在 debugger 觸發的時候由 App 自行開發相關的功能,自己在 App 裡寫一個 devTool 也未嘗不可。

? Getting started with Bluetooth Low Energy on iOS

介紹了和藍芽外設通訊需要了解的一些概念,並且用一個例項演示瞭如何使用 iOS 的 CoreBluetooth 框架進行開發。CoreBluetooth 的入門使用 Raywenderlich 上的 Core Bluetooth Tutorial for iOS: Heart Rate Monitor 介紹的也很清晰。

軟體工程師需要了解的網路知識:從銅線到HTTP(一)—— 前言

這是一系列文章,其目標是讓軟體工程師瞭解網路各層的本質。系列文章從網線開始講起,一路帶你瞭解 乙太網TCP/IPHTTP/HTTPS,建議精讀。

Recreating the Apple Music Now Playing Transition

從零開始實現一個 Apple Music 的 Now Playing 動畫,主要基於 StoryBoardAuto Layout constraints Animating

Simplifying Swift framework development

介紹了兩個簡化 Swift Framework 開發的小技巧:

  • 使用 @_exported 宣告引用,從而不用在每個 Swift 檔案中都進行宣告,類似 Objective-C 中的 Prefix Header;
  • 通過 class 的方式生成 Bundle,並定義成 Constant,從而更方便地獲取 Framework 中的資原始檔。

How to create a complex loading animation in Swift

raywenderlich 的教程一直以通俗易懂聞名,這次推薦的是一篇一步一步教你實現複雜動畫的教程,使用的核心技術點是 CAAnimationGroup。如果你沒有時間一步一步跟著實現,也可以通過這個地址直接下載,檢視完整的 Demo 工程。

Creating Flows

流程是使用者互動設計的一個重點,例如說註冊,我們不會給使用者展示一個長長的列表去填寫資訊,而是會切分成多個頁面去讓使用者逐步完成。那麼我們該如何使用程式碼去組織這樣的流程呢?在這篇文章裡作者就深入地探討了如何使用低耦合的元件來完成這樣一套流程。

中文文案排版指北

在我們的日常工作中,經常需要編寫一些文案、材料、報告之類的文字,大家應該已經非常熟練了。不過,大家是否有認真考慮過自己的標點、空格等的使用是否妥當呢?這篇文章給大家進行了較詳細的分析,希望大家閱讀後結合自己的思考,統一中文文案、排版的相關用法,形成自己(或團隊)的排版規範。

為什麼要快取 NSDateFormatter ?

建立一個 NSDateFormatter 物件並不像我們想象的那樣輕巧,如果你需要頻繁使用某個 formatter 的話,對它進行快取可能是一種更高效的方式。本小結闡述了問題的原因和推薦的快取方式,值得一看。

? A better way to update UICollectionView data in Swift with diff framework

藉助 Diff 演算法,以更高效的方式去重新整理 UICollectionView。文章簡單的介紹了一下 DeepDiff 這個庫的原理及如何通過兩個陣列的差異對一個 UICollectionView 進行區域性重新整理。

工具

WoodPecker

app 執行在真機時如何實時檢視沙盒中的檔案狀態?@張小剛喲 開發的 WoodPecker 通過 app 建立和 mac 客戶端 socket 連線來解決這個問題。除了進行基本的沙盒檔案檢視修改外,還可以自定義通訊報文建立擴充套件外掛,對於某些場景中除錯非常實用。

目前缺點是提供的 framework 需要手動整合到應用中,還未支援 cocoapod 匯入。售價 30 元,感興趣的朋友可以體驗一下。

Fastlane: Boarding

原來新增一個 testflight 測試使用者需要登入到 ITC ,手動新增郵箱。使用 boarding 可以簡化這一過程。

iOS 爆記憶體問題解決方案 – OOMDetector 元件

本文將介紹一款 iOS 爆記憶體分析利器,它可以以極其微小的代價讓藏匿極深的爆記憶體罪魁禍首無處遁形 —— OOMDetector。OOMDetector 是手 Q 團隊自研的 iOS 記憶體監控元件,騰訊內部目前已有多個 App 接入了 OOMDetector,它主要有以下兩個功能:

  • 爆記憶體堆疊統計:負責記錄程式記憶體分配堆疊和記憶體塊大小,在爆記憶體時 Dump 堆疊資料到磁碟;
  • 記憶體洩漏檢測:檢測記憶體洩漏,目前支援 Malloc 記憶體塊和 OC 物件的洩漏檢測。

OOMDetector 可以快速幫助開發者發現和定位 App 爆記憶體問題和記憶體洩漏,元件目前已在 Github 開源,感興趣的同學可以嘗試使用。

程式碼

AppFolder

AppFolder 是一個輕量級框架,用於友好的展示 App 資料夾內的目錄,而且是強型別的。系統目錄如 “Caches” 和 “Application Support” 已經存在,開發者也可以用幾行程式碼新增自己的目錄。AppFolder 充分利用了 Swift 的繼承優勢,介面簡潔而又美觀。有了它,你再也不需要用到 NSSearchPathForDirectoriesInDomains,再也不會。

重新整理:重新發現商業與未來

微軟第三任 CEO Satya Nadella 寫的書。書裡介紹了他接任後對微軟的改造,強調企業文化,重拾微軟靈魂的過程。書中也介紹了微軟業務轉型過程中的一些決策過程,比如擁抱雲端計算、Office 在全平臺的推廣、Windows 10 的免費升級策略,收購 LinkedIn 等。最後一部分還談了他對未來科技發展三個大方向的思考:虛擬現實、AI、量子計算。

音視訊

比特幣原理

視訊通過一個虛構的例子,一步一步由淺入深地介紹比特幣是什麼,以及比特幣的基本工作原理。

本期編輯

@沒故事的卓同學@四娘@mmoaay@享耳先森@EyreFree@Damonwong@折騰範兒_味精@張嘉夫@AidenRao

說明

? 表示需翻牆

相關文章