老司機 iOS 週報 #13 | 2018-04-02

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

歡迎第 12 位編輯 @aaaron7 加入。

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

老司機 iOS 週報 #13 | 2018-04-02

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

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

新聞

蘋果新品釋出會

蘋果進行了一場沒有直播的釋出會。釋出了支援 Apple Pencil 的 9.7 寸 iPad,晶片升級為 A10 Fusion,較上代在 CPU 效能提升了 40%,在圖形運算提升了 50%。32GB 價格由 2688 降至 2588。

除此之外,蘋果還更新了一系列服務:iWork 三件套加入了「智慧註解」功能、用於教學的 AR 應用以及免費的「人人能創造」課程和「課業」應用。為在校師生提供更好的授課和學習體驗。

iOS 11.3 正式釋出

iOS 11.3 正式釋出,針對之前的「降頻門」事件,11.3 可在 “設定”->“電池” 中檢視電池效能並關閉「電源管理」功能。 One more thing, 北京、上海地區使用者還有專有福利,可用 Apple Pay 繫結「交通卡」,此功能與廣州、杭州等地目前的 Apple Pay 支付不同,使用 NFC,刷卡時候不用「刷臉」了。

iOS 11.3 支援 PWA

隨著 iOS 11.3 的釋出,蘋果悄悄的支援了 PWA 理念背後的幾種新技術:Service Worker,Web App Manifest。通過 PWA 現在可以不用通過 App Store 在 iOS 上安裝應用了。但是 iOS 上的 PWA 還是有諸多額外的限制:最多 50Mb 的離線資料和檔案;無法在後臺執行程式碼;沒有訊息推送,沒有 Siri 整合等。

PWA 在 iOS 上的能力還是差 Native app 很多,談取代就想多了。看做 web 能力的延伸和擴充套件我想才是正確的認知。

區塊鏈遊戲,其實也沒什麼神祕的

Cocos2d-x 宣佈開發基於區塊鏈的遊戲引擎,提供 SDK 供遊戲廠商接入,給現在火爆的區塊鏈圈子又多了一種應用形態。大部分遊戲都有自己的金幣貨幣與金融交易體系,發幣與交易在遊戲裡是一個很自然並且有意義的事情,而區塊鏈技術能給現在的遊戲價值體系解決了一些問題。一,跨遊戲之間的金幣流通。二,玩家點對點去中心化的可通道具交易。三,智慧合約防止遊戲公司,增發減發隨意調控遊戲物價。

Swift for TensorFlow

TensorFlow 社群在 TensorFlow Dev Summit 2018 上宣佈將於四月開源 Swift for TensorFlow 專案。

Integrating ClassKit into Your App

Xcode 9.3 帶來了 ClassKit 框架,與全新的、強大的 iPad app Schoolwork 配合,幫助教師和學生追蹤作業和進度。藉助 ClassKit,教師可以輕易檢視 app 中的特定學習活動,點選一下就可以直接帶學生們進入該活動。此外還會與教師安全、私密地共享進度資料,以幫助教師進行個性化教學。

文章

? Swift 4.1 新特性概覽

這周 Swift 4.1 伴隨著 Xcode 9.3 一起釋出了,沒有破壞性的 API 修改,大幅優化編譯速度,並且還加入了幾個實用的小功能,知識小集在這篇文章裡給我們深入介紹了新增的特性,強烈推薦大家在程式碼遷移之前過一遍這篇文章!!!

? ? ? Everything about public and private Swift attributes

經常寫 Swift 你是不是都會有這樣的感受,每次遇到一些不明所以的 warning 總是可以靠一些 @ 開頭的修飾符搞定。比如可能是最常用的 @objc,或者是閉包伴侶 @escaping,這篇文章非常全面的介紹了 Swift 的這一類公有屬性修飾符(public attribute)的用法,可以幫助你獲得一個全面的認識。

不僅如此,文章後半部分還介紹了一些私有屬性修飾符(private attribute),比如起到類似 pch 標頭檔案作用的 @_exported 以及指定函式是否可以被看做是原子操作的 @_transparent。私有屬性修飾符絕大多數都和編譯過程中的優化策略選擇有關,雖然可能日常開發中用不到,但很適合對 Swift 語言本身有興趣的讀者深入研究。

? ? ? Best iOS hacks from Twitter: January & February Edition

1 月 和 2 月 twitter 上收集的各種小技巧。五花八門,總有幾條擊中你。

? ? Pragmatic iOS app architecture

文章從多個角度評估一種架構是否適合你的專案,並從經典的 MVC 一路引申到 RXSwiftMVVMVIPER,值得細讀。

? What 2018 has in store for Swift

文如其名,本篇文章重點講述了在2018年即將到來的 Swift 4.2 和 Swift 5.0 有哪些激動人心的新特性,比如精準刪除 remove(where:) 和像 OC 一樣支援 #warning#error 標籤來讓編譯器協助自己管理程式碼,其中最好玩的還是可以通過 CaseIterable 協議來讓 enumcase 可以被列舉,到時候 DSL Parser/Interpreter 之類的應用程式碼就更優雅了。

? NSURLProtocol 攔截 NSURLSession 請求時body丟失問題解決方案探討

NSURLProtocol 我們常用來攔截網路請求,但當使用 NSURLSession 發起 Post 網路請求的時候,用 NSURLProtocol 攔截就會發生無法獲取 Post Body 的情況。為此本文給出來幾種解決辦法,並且給出了最佳實踐方案。

? UIView Auto Layout life cycle

Auto Layout 是蘋果一直在大力推廣的佈局方式,現在在開發者中的使用也越來越多。這篇文章從『約束更新』、『佈局計算』和『渲染顯示』三個過程非常細緻地分析了UIView 進行 Auto Layout 的生命週期,最後還討論了 Intrinsic Content Size(如 UIButton 等可由內容自然決定大小)Alignment Rectangle(如新增陰影等可見區域與 Frame 不等的) 的使用。

? ? Elegantly chaining UIViewPropertyAnimators

在 iOS 10 之前,如果想按順序播放動畫,會通過 UIView.animate() 裡的 completed blok 巢狀起來,程式碼看起來並不優雅。iOS 10 引入了物件導向版本的 UIViewPropertyAnimator。它允許將每個動畫的定義與它們連線方式區分開來,擁有更好的可讀性,也方便解耦。

還可以將 UIViewPropertyAnimation 相容 RxSwift,通過“流”將所有的動畫連線起來。

然而更為巧妙的實現方式,是通過自定義操作符實現鏈式呼叫,最終效果:self.animator1 ~> self.animator2 ~> self.animator3 ~> self.animator4。

? 冰霜的 ML 入門筆記

冰霜的文章一直都是以深入全面、通俗易懂著稱。《冰霜的 ML 入門筆記》包含了他在學習史丹佛機器學習入門視訊課程的全部筆記。如果你沒有足夠的時間去看這些視訊,或者聽英文的能力沒有那麼強,這些筆記對你來說一定非常有用了,而且你也不用擔心會錯過視訊中的一些內容,因為這些筆記和冰霜以往的風格一樣,內容比視訊只多不少。

? Tips to become a better Swift (iOS) Developer

語法糖越多的語言,就越容易體現出簡潔高效和囉嗦冗長之間有多大的差別。不幸又萬幸的是,和 Ruby 類似,Swift 是一門語法糖很多的語言。文章介紹了很多 Swift 一些基礎但又高效的寫法,如果靜下心來仔細閱讀,相信你會寫出不一樣的 Swift 程式碼。

? compactMap 瞭解一下?

Swift 4.1 裡將 flatMap 的其中一個版本重新命名為 compactMap,但無論全域性替換或者是逐個編譯警告消除都不是一個好辦法,這篇文章就介紹瞭如何使用方法過載以及重構工具,精準快速地替換掉專案裡棄用掉的 flatMap

? 教你如何反編譯微信小程式

作者大致描述瞭如何將微信小程式編譯之後的檔案反編譯成開發工具可讀的原始碼的過程,文章描述了一個大概,建議閱讀完文章之後,有興趣的話可以進一步瞭解一下作者開源的 反編譯工具

矽谷生活半年記

作者對自己最近半年在矽谷切身經歷的小結,從醫、食、住、行、環境、薪酬等方面對矽谷生活進行了介紹並與國內做了簡單對比,同時配以大量圖片,讓我們瞭解了一種完全不同的生活方式的同時,也給我們對未來的規劃提供了些許參考。

程式碼

SwiftSoup

SwiftSoup 是一個純 Swift 的 HTML 解析庫,支援跨平臺(Linux、iOS、macOS、tvOS 和 watch OS)。它提供了提取並運算元據的 convenient API,充分利用了 DOM、CSS 和 類似 jquery 的方法。SwiftSoup 實現了 WHATWG HTML5 規範,將 HTML 解析為與現代瀏覽器相同的 DOM。

工具

函式響應式程式設計框架:ReactiveCocoa 和 RXSwift 速查表

近幾年函式響應式程式設計在移動端的應用越來越多,其中『ReactiveObjC』和『RxSwift』分別是 ObjC 和 Swift 對這種程式設計思維實現的框架。ValiantCat 使用 XMind 將這兩個框架的 API 和 小技巧整理成了腦圖,作為速查表輔助自己學習記憶。

另外,shuaiwang007 也總結了一些 RAC + MVVM 在實際專案中用法

本期編輯

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

說明

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

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

相關文章