老司機 iOS 週報 #4

老司機iOS週報發表於2018-01-22

進行了四期的週報編輯後,目前參與編輯穩定在 7 個人。看到挺多人表示希望我們能夠堅持下去,現在我們每人平均花幾個小時就足夠維護週報的內容,繼續做下去應該問題不大。

歡迎來自百度的@折騰範兒_味精加入我們的編輯團隊。

感謝來自餓了麼的@mmoaay為老司機畫的 logo,真是 666。

新聞

庫克:將允許 iPhone 6 / 6s / 7 手動解除降速

持續發酵的蘋果電池降頻門,蘋果再退一步。庫克接受採訪時表示會在系統中增加一項設定,使用者可以禁用蘋果為了保護電池而設的降頻策略。最新的 11.2.5 測試版中已經可以檢視電池狀況。

微信打賞功能將在 iOS 上回歸

在「微信公開課 Pro」的主題演講中,張小龍表示打賞功能將回歸,並將修改打賞機制,打賞金額將直接支付給內容創作者。

Apple 更新 App Store 網頁預覽介面

Apple 在 iOS 11 中對 App Store 進行重新設計,現在終於對網頁版動刀,跟上 iOS 上的簡潔和卡片式風格。

蘋果預計下週修正文字訊息漏洞「ChaiOS」

跟之前的 iMessage 漏洞類似,收到一個特殊連結的簡訊之後,裝置就會重啟,主要是因為 iMessage 會自動載入網頁資訊生成預覽介面,在這一個網頁裡嵌入幾十萬個不必要的字元就可以系統崩潰,據悉這個 bug 已經在 iOS 11.2.5 beta 6 裡修復了。

文章

蜂鳥商家版 iOS 元件化 / 模組化實踐總結

文章詳實介紹了餓了麼物流移動 iOS 開發組的 Swift / OC 混編專案「蜂鳥商家版」進行元件化 / 模組化改造的實踐歷程,有類似需要的同學可以參考一下。

iPhone X home button

iPhone X 用來替換物理 home 鍵的虛擬 home indicator,可能展示在任何一個 view 上,也展示在鎖屏介面上,home indicator 背景顏色會根據背後展示的 view 而改變。這是怎麼實現的呢?Sash Zats 深入底層來揭示祕密。

從 Aspects 原始碼中我學到了什麼

作者分享了自己閱讀 Aspects 程式碼之後的收穫,另外部落格裡還有幾篇 YYKit 的原始碼閱讀分享,質量都很高。

iOS 如何進行網路測速

@Joy_xx 大佬的文章,主要分享了兩種常見的網路測速方案。文章內容簡短,只談思路,不涉及技術細節。想做網路測速又沒有思路的童鞋可以看看。

Useful Optional Extensions

文章分享了各種 Optional 的實用擴充套件。通過這些擴充套件,可以用更少的程式碼來實現判斷非空、設定預設值、設定預設行為、處理異常、定義多個可選值之間的關係、判斷執行以及條件過濾等功能。文章末尾還給了一個例子,通過程式碼對比的方式,鼓勵大家使用擴充套件 Optional 的方式來實現業務邏輯。

WebAssembly 的那些事

文章介紹了 WebAssembly 這門在瀏覽器裡跑編譯後的位元組碼的神奇技術,可以把 C++ / Rust 編譯成位元組碼下發給瀏覽器,進行高效的位元組碼執行,而非傳統 JS 解釋執行。文章還手把手教你親自寫一個 C,先編譯成 asm.js,在生成 wasm 檔案執行,也教你把Rust,編譯成 wasm 執行。

objc - 編譯 Runtime 原始碼 objc4-680 objc - 編譯 Runtime 原始碼 objc4-706

從蘋果開源網站上,我們可以找到很多有意思的開源專案。objc4 是其中一個,也即我們通常說的 Runtime 原始碼,我們遇到的 libobjc.A.dylib 就是用它編譯出來的。

這兩篇文章就是介紹如何將從蘋果網站上下載的 Runtime 原始碼,建立工程進行編譯,執行,除錯,從而更深刻的學習和理解 Runtime 原始碼的,並且文章中留有作者的 GitHub 可以直接下載可編譯版的 2 套原始碼。

WKWebView 強大的新特性

越來越多的專案逐漸開始使用 WKWebView 進行網頁展示,是否苦惱於 WKWebView 對於操作 Cookie 的天坑以及不支援 NSURLProtocol 的弊端?這篇文章介紹了 iOS11 的新 API 為你解決了這些問題,不僅包括操作 Cookie 的 WKHTTPCookieStore,處理自定義協議的 WKURLSchemeHandler,還有用於廣告遮蔽的新 API WKContentRuleList

Building for the Blockchain(面向區塊鏈開發)

在區塊鏈上,你不需要部署任何中心化的伺服器,這就意味著單點失敗的風險為零。如果你的整個技術棧都是去中心化的,那麼就不需要引入“可信”的第三方,而沒有第三方則意味著可以 100% 對抗審查。區塊鏈技術帶來了資料開放的新機會,基於區塊鏈的去中心化資料庫未來可期。

YC 是著名的科技企業孵化機構。釋出在 YC 官博上的這篇文章介紹了區塊鏈技術對開發者的意義。

給 Bool 擴充套件一個 Toggle 方法

objc.io 介紹的小技巧,給 Bool 擴充套件一個 toggle 方法之後就可以避免 myVar.prop1.prop2.enabled = !myVar.prop1.prop2.enabled 這種醜陋的寫法了,可以直接寫為 myVar.prop1.prop2.enabled.toggle()

並且已經起草提案給 Swift Evolution 了,這個方法有可能在以後會加入標準庫。

今日頭條演算法原理(全)

今日頭條公開了他們推薦演算法的原理。介紹瞭如何做到內容、使用者、環境(工作場合、通勤、旅遊等不同的場景)的匹配預估。

工具

CocoaPods 釋出 1.4.0

CocoaPods 釋出了 1.4.0,帶來了很多強大的功能。如下:

  • Test specs 支援配置 App host
  • 指令碼配置 支援 Podfile 和 Podspec 配置指令碼,CocoaPods 會根據你在Podfile 和 Podspec 的關聯指令碼描述,自動新增相關指令碼到不同的Target;
  • 支援靜態庫 使用 use_frameworks! 同時支援 static framework 和 dynamic framework。只要開源庫的作者在 podspec 檔案中新增 s.static_framework = true,CocoaPods 就會把這個庫配置成static framework。同時支援 Swift 和 Objective-C;
  • Podspec 檔案可以配置 Swift 的版本號
  • 過渡到https 當你釋出一個 Pod 不支援 https 的時候,會有一個警告。在未來的某個版本,將不再支援不支援 https 的 Pod。

Design+Code

Design+Code 是一個教你從零開始設計、開發一款 App 直到在 App Store 上架的 iOS App,不需要任何程式設計基礎。其中包括 iOS 11 的設計理論例如顏色、動畫以及為 iPhone X 進行適配等,少見的設計和開發兼具的互動式教學工具,值得一試。

cocoapods-packager

CocoaPods 官方工具,可以根據現有的 podspec 生成 framework 或 static library,給我們的 Pods 庫釋出工作帶來了更多選擇和想象空間。

程式碼

SwiftyUserDefaults

利用 NSUserDefaults 儲存一些資料在開發中是常用的事。但是每次存取都依賴於字串型別的 key、型別也不校驗,在實際開發中也帶來了不小困擾。這個庫利用 Swift 的列舉和泛型優化了 NSUserDefaults 的使用體驗,思路值得借鑑。

Turi Create

「Turi Create」是 Apple 的機器學習框架,目前已經開源在 Github 上。它簡化了定製機器學習模型的開發。就算你不是一個機器學習專家,也可以在你的應用中新增建議、物件檢測、影像分類、影像相似性或活動分類。讓開發者更容易的構建機器學習模型。

objc.io 新書「App Architecture」

本書預計四月完成,但提供「早鳥」版購買,每週可以收到新內容。

音視訊

Swift Unwrapped #42 Conditional Conformance

這期很簡短,只是簡單地聊了一下,之前 Ole 大神發過一篇文章講了如何檢視 Swift 原始碼,裡面講到了一個程式碼生成工具 gyb,主要是為了解決 Swift 泛型能力不足的問題,現在實現了 Conditional Conformance 之後就可以重構掉之前很大一部分 gyb 程式碼。並且單單只是重構掉 Slice 型別,就已經讓 Swift 標準庫的二進位制檔案縮小了 5% ?,真是越來越期待 Swift 4.1 的釋出了!!!

另外 Swift 的部落格還發布了一篇文章專門講解這個功能,有興趣的人可以去看看。

內推

淘寶 - Weex 核心研發技術專家 - 基礎平臺部

Weex 的價值在阿里集團已經得到高度認可。weex 下一步計劃是利用 C++ 重寫核心。

簡歷可傳送至 zifan.zx@alibaba-inc.com

阿里巴巴 - 國際技術事業部 - ICBU 技術部 - iOS 高階開發工程

國際事業部在杭州濱江,發展迅速非常缺人。

感興趣的可以簡歷傳送到曾憲華的郵箱:xianhua.zxh@alibaba-inc.com。

CSDN 亟需前端開發和後端好手加盟,一起打造程式設計師新社群

@蔣濤: 老社群的技術債負擔不輕,亟需技術開發前端和後端好手加盟 CSDN,一起打造程式設計師新社群。

本期編輯

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

說明

? 表示需翻牆

相關文章