老司機 iOS 週報 #24 | 2018-06-25

老司機iOS週報發表於2018-06-25

新聞

《WWDC 17 內參》免費訂閱

去年我們組織針對 WWDC 17 的內容寫了 25 篇文章,原來售價 39 元,現在免費開放給大家。

"iPhone Only" apps on the iPad

一個不錯的訊息,在 iOS 12 beta 2 上,你的 iPhone Only 應用程式將會以 16:9 的比例執行。在此之前,儘管 iOS 10 不再支援 iPhone 4S,但你依舊需要讓 APP 能以 3:2 的比例執行在 iPad 上。

蘋果鍵盤維修計劃

蘋果確認 MacBook 的蝶式鍵盤出質量問題,開啟鍵盤維修計劃 ,如果你的蘋果筆記本出現了諸如字母或字元意外重複/字母或字元不出現/按鍵感覺粘滯或按鍵反饋不一致,並且符合維修計劃覆蓋的機型範圍,請預約去 Genius Bar 進行維修。

重磅!Google釋出Flutter Release Preview 1

在 GMTC 2018 大前端大會上,Google Flutter 高階工程師於瀟宣佈 Flutter Release Preview 1 釋出,這標誌著 Flutter 進入了一個新階段。同期還發布了基於 VSCode 擴充套件等輔助開發工具。Flutter 一直在不斷地進步,並且得到了來自全世界社群的支援。

文章

? ? WWDC2018 - 來自一線開發者的技術筆記

頭條客戶端團隊針對 WWDC 2018 寫了 15 篇技術筆記,有些是 老司機x知識小集xSwiftGG WWDC 18 專題目錄 沒有覆蓋的。可以看看目錄挑選自己感興趣的看看,一定不會讓你失望。

? ? What’s Next for Mobile at Airbnb

對於 ReactNative 社群來說,上週兩大事件值得關注:Facebook 宣佈對 ReactNative 底層進行重構;Airbnb 宣佈放棄 RN 並連發了五篇 blog 來解釋。

  • Part 1: React Native at Airbnb 講為什麼 Airbnb 在 2016 年決定投入 RN,比如 比擬原生體驗程式碼可以跨平臺提升開發體驗 等。

  • Part 2: The Technology 著重寫 RN 在技術層面的一些優劣,優勢:垮平臺、迭代速度、與 Native 程式碼橋接方便等,劣勢方面:因 JS 無型別導致不好重構、JSCore 在雙平臺的不一致性、App 體積、RN 初始化及首次渲染時間等。

  • Part 3: Building a Cross-Platform Mobile Team 從團隊管理角度來講引進 RN 之後帶來的一些問題:要用好 RN 開發者還需要懂 Native,這種混合對招聘、測試、迭代都會帶來很多挑戰。

  • Part 4: Making a Decision on React Native 由於 RN 在技術方面的一些問題及對團隊帶來的挑戰不能很好的解決,Airbnb 決定 Sunset RN,停止用 RN 開發新功能,逐漸轉向 Native。對於開源,他們會將一些專案轉到 react-native-community。

  • Part 5: What’s Next for Mobile 講 Airbnb 在移動方向的未來,介紹了 Server-Driven Rendering,還有努力推進的 EpoxyMvRx 等專案。

? ? On Apple's Love Affair With Swift

標題讀起來有點困惑? 不過這不重要, 文章內容和這個標題關係不大。之前一位名叫 Dominik Wagner 的博主寫了一篇 diss Swift 的文章, 本文的作者通過從之前 Chris Lattner 在一個 Podcast 接受採訪的觀點中有針對性的摘抄了一些,來對 Dominik Wagner 的觀點進行了回應。於是有了本文。

Swift 不只是一門多了面向協議能力和靜態型別的語言,要了解 Swift 的詩與遠方,還是要多看看 Chris 發表的,關於 Swift 的設計的一些觀點, 比如這篇部落格。裡面解答了諸如為什麼要發明 Swift,而不是簡單把 OC 變得更好等核心問題,當然也包含一些有趣的觀點,比如 Chris 說明了 Swift 的 functional 的特性大量參考了 Haskell,這些從 Haskell 參考的概念也成為其他高階特性的基礎(如面向協議)。以及 Swift 並不只是成為一門新的 Cocoa 程式語言,而是對標 C 和 Rust,成為更好、更安全的系統程式語言。

筆者看完後竟然有一絲感動,彷彿感受到了 Chris 在設計與迭代這門語言上的思考與傾注的各種努力,通過一個又一個巧妙的方式把種種先進的理念彙集到一起,make things happen。恍惚間覺得什麼 ABI 穩定,Playground 崩潰,Source Intellisense 崩潰都是浮雲, 這是一門雖然年輕但未來潛力無限的程式語言, Let's make Swift great again!

? ? Maintaining Productivity as Engineering Teams Scale

早早的時候《人月神話》裡就指出了:往一個延遲的專案裡新增人手只會拖慢專案的進度。那麼隨著業務增長,開發人員也越來越多後要如何保持團隊的效率要解決什麼問題呢?文章給出了極富建設性的意見。

  • 花時間償還技術債,否則往後會越來越拖累開發進度
  • 隨著使用者的增加,避免工程師陷入解決客服、運營的問題,分散開發精力
  • 關注“老人”的價值。隨著新同事的加入,“老人”還額外承擔了介紹專案情況,說明某個功能對業務的價值。這個過程中要理解“老人”自身的開發進度可能會變慢。
  • 技術人員的職能分化,有些人可能傾向於往管理崗發展,有些人適合技術專家方向
  • 注重溝通效率。團隊人數少於十人的時候什麼事在飲水機旁邊可能就討論完了。人數增加後則要注重如何有效的溝通,有的團隊也可能都不在一個辦公地點。同時這個環節也體現了高質量文件的重要性。

? [譯] 怎樣(以及為什麼要)保持你的 Git 提交記錄的整潔

作者通過日常工作中常用的 4 個 git 使用場景,向讀者解釋了為什麼要保持 Git 提交記錄的整潔,以及保持 Git 提交記錄的整潔的方法。建議讀的時候跟著作者的思路操作一遍,更能加深理解!

? Create ML Tutorial Getting Started

Raywenderlich 家出的 Create ML 入門教學,手把手教你用 Craete ML 和 Turi Create 構建一個通過圖片分辨貓狗的機器學習模型,體驗過一遍以後大家可能對 Create ML 這門框架,並且國內有開發者已經翻譯了這篇文章,感興趣的同學可以考慮跟著文章體驗一次機器學習模型的訓練過程。

? iOS中的圖片使用方式、記憶體對比和最佳實踐

在 WWDC2018 的影像最佳實踐中,蘋果為我們介紹了一種縮放圖片的方式。本文則是對這個議題進一步探究,研究了三種建立UIImage的方式所佔用的記憶體大小,結論是蘋果官方提供的方式佔用記憶體最小,推薦大家使用。

? Using generics and descriptors to standardise icons, images and placeholders on iOS

通常應用裡的圖片佔點陣圖只有少數幾種樣式,如果粗暴的使用繼承來複用不夠靈活。本文介紹了利用泛型約束來進行圖片配置。我個人認為這個實現方式清晰且安全,值得借鑑。

? 2018 年主流 RSS 服務選哪家?Feedly、Inoreader 和 NewsBlur 全面橫評

在我們已經有了公眾號、QQ/微信群、直播平臺等各種技術社群的集中式服務時,RSS 是否還適合技術人員?唐巧在3月25日的部落格是這麼說的

我之前做 iOS 開發,白天上班完成公司的需求,晚上就自己研究一些技術細節,寫一些總結的部落格。每年的 WWDC 視訊,我都堅持看完並且寫一些總結筆記。我還用 RSS 訂閱了很多 iOS 國內外的部落格,平時和週末沒事就翻來學習。

可見,在資訊高度過載的今天,RSS 無疑發揮了一個「聚合器」(aggregator)的作用,幫使用者抓取各個高價值訂閱源的更新。但各家 RSS 服務之間的區別性其實很高,最終閱讀體驗也大相徑庭。此外,目前絕大多數的 RSS 服務都是有收費選項的,要不要付費、付費給誰也是需要考慮的問題。為此,本文挑選了幾家有代表性的 RSS 服務進行對比,分析各自優劣,希望能幫讀者做出最適合自己的選擇。更多的時候,RSS 是一種學習習慣,而 RSS 服務就是學習的工具。工具好不好用,關鍵還是要看主人。

P.S. 國內的 RSS 源數量正在逐漸減少,這裡吐血推薦一個基於多人協作式開發的 RSS 生成器,畢竟沒有池塘哪有魚,對嘛!

?The Problem You Solve Is More Important Than The Code You Write

You are not a Code Monkey paid to write characters on a screen.

作為研發,可能會認為,產品業務的方向、需求應該僅僅是 PM 們需要考慮的事情,而我們只需要通過程式碼完成一個又一個的需求,但事實真的是這樣嗎?在 coding 過程中,我們可能常常執迷於程式碼寫的漂不漂亮,介面設計符不符合 DRY 原則等等。當然,這並沒有什麼不對,只是,似乎我們忽視了一個問題,那就是,我們的每一行程式碼,最主要的目的是為了解決問題,或者說,為所在公司、團隊創造價值。本文雖然沒有介紹任何技術相關的東西,但可能比很多技術文章更值得技術人員去看一看。

PS:文中舉的藍芽解鎖的例子,實際上我覺得無匙進入比按個按鈕解鎖在技術上難實現的多(手動滑稽)

設計

? How Apple can fix 3D Touch

作者認為目前 3D Touch 的體驗有待改進,使用者無法區分普通按鈕與支援 3D Touch 的按鈕,只能不斷嘗試然後記住那些支援 3D Touch 的按鈕。所以作者認為 3D Touch 按鈕應該在視覺上加以區分,例如在右下角加一條短線。

程式碼

MessengerKit

MessengerKit 使用 Swift 編寫,是一款基於 UICollectionView 的訊息 UI 框架,可以方便地搭建類似 iMessage 的介面。它內建了可自定義的主題,你可以根據示例來快速地構建符合你應用 UI 的訊息對話方塊,值得一試。

StyledTextKit

StyledTextKit 是一款支援後臺渲染和 LRU 快取的富文字框架。在 iOS7 之前,UITextView 由於使用了 UIWebView 導致效能十分差,雖然後來蘋果給出了 TextKit 框架,但是所有的渲染和尺寸計算依舊還是在主執行緒。所以 GitHawkApp 的開發者自主開發了 StyledTextKit 這個富文字框架,用於含有大量富文字的列表。在子執行緒中計算背景大小及文字內容渲染,保證在滾動大量文字的時候依舊十分流暢。

內推

位元組跳動 北京 iOS 團隊持續招人中

這是一家非常年輕的創業公司,充滿活力與激情,只招優秀的人,一起做有挑戰的事情。直接內推可以將簡歷及心儀崗位傳送至我的郵箱 raozhizhen@bytedance.com,或者新增我的微信 jingmu1994 瞭解更多公司資訊。有需要的我也可以直接幫你對接技術 Leader 詳聊。

深圳頭條研發中心誠招各路 iOS 好手一起做取悅自己的專案

如想了解更多深圳頭條的資訊,可以加小T微信:tomtan,切磋技術和聊情懷都可以喔~~~~

杭州/廣州/深圳 奇志科技招聘 iOS、前端

奇志科技自 2016 年起通過行業無人機協同工作流 Mesh 進入物聯網與人工智慧領域, 併成功為房地產、建築、測繪、電力巡檢等行業提供無人機解決方案。Mesh 在運用 yarn, rollup, vue 等技術棧的同時,利用 Couchbase 設計多端資料同步方案,並深入研究 React Native。也可以微博上私信 @沒故事的卓同學 瞭解。

百度教育事業部招iOS開發

部門下面有百度閱讀,百度文庫,百度愛聽等App產品。團隊技術氛圍濃厚,有興趣的同學歡迎將簡歷傳送到我的郵箱:lizelei@baidu.com,想了解更多也可新增我的微信:lizelei618087。

關注我們

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

老司機 iOS 週報 #24 | 2018-06-25

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

本期編輯

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

說明

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

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

相關文章