老司機 iOS 週報,只為你呈現有價值的資訊。
你也可以為這個專案出一份力,如果發現有價值的資訊、文章、工具等可以到 Issues 裡提給我們,我們會盡快處理。記得寫上推薦的理由哦。有建議和意見也歡迎到 Issues 提出。
新聞
備受 iOS 開發者喜愛的 raywenderlich 社群全新改版!
raywenderlich 這次進行大改版,為開發者提供更為優質的教程。此次更新主要有:
- 教程將全部按照主題分類,目前已經有 iOS & Swift tutorials、Android & Kotlin tutorials、Unity tutorials 以及 Unreal Engine tutorials 四大類,未來 rw 也將繼續增加新的分類;
- 每個分類都會有自己的主頁,可以幫助你更快地找到自己所需要的教程;
- 全新的學習路徑規劃,真正實現從『入門』到『精通』;
- 個人主頁上線,掌控自己的學習進度;
- 教程庫,成千上萬的教程資源供你篩選;
WWDC 2018 視訊已經全部配上簡體中文和日文字幕
在早些時候,蘋果已經為所有視訊配上了英文字幕,僅少部分視訊有中文字幕,這次全部都已配上簡體中文和日文字幕。相比去年第一次有中文字幕,今年的又額外增加了日文字幕,看來日語區的 Apple 開發者也不少。如果你對之前的看的某個 Session 還有疑問,不如趁著中文字幕上線的熱乎勁再回顧一遍。
Dart 重啟!Dart 2 正式釋出,目標成為移動與 Web 開發主流語言
Google Dart 產品經理宣佈 Dart 2 正式釋出,這標誌著 Dart 語言的重啟,目標成為主流的移動和 Web 開發語言。同時,Google 還宣佈重構 Dart Web 平臺,這對開發者來說,是一個高效率、高效能和可擴充套件的組合。 Google 稱,Dart 2 的目的有三個:優化語言開發,增強 Google 對 Web 和移動框架的支援能力,將 Google 內部的一些支援 Dart 的工具和元件帶給外部的開發者。
文章
? Guys, REST APIs are not Databases
作為目前最常見的後端設計風格,REST API 已經成為任何專案中不可缺少的一部分。然而在實際使用的時候,開發者很容易把 REST API 設計成直接對資料庫進行操作。
作者在文章中解釋了為什麼直接對資料庫操作是有問題的,同時也給出了自己的對 REST API 設計的一些理解。
? Refactoring Massive App Delegate
每一個 iOS 程式設計師都需要和 AppDelegate 類打交道,App 生命週期的邏輯一般都會放在這個類中進行處理。該文作者提出了一個“Massive App Delegate”的概念,表示當一個 App 越來越複雜,其 AppDelegate 類也會變得越來越龐大並且難以維護,作者分析了一些有名的開源專案並抽取了一些大家喜歡放在 AppDelegate 類中處理的邏輯列表,並且針對性的提出了三個方向:命令模式,組合模式和中介者模式來更好的組織 AppDelegate 中的程式碼,很有參考價值。
? Type inference-powered serialization in Swift
型別推斷是 Swift 作為強型別語言的一個特性。本文介紹了利用泛型實現型別推斷簡化 Codable 解析 JSON 的操作。閱讀本文可以學習到在實踐中如何應用泛型。
? 面試中的個人競爭力
很多人都覺得自己沒有競爭力,那相信這篇專欄會戳到你的痛點,找工作是不可能的,這輩子都不可能找工作,演算法又不會,原理又不懂,只能做一個 github 的搬運工,才能維持會寫程式碼的樣子。
寫簡歷要挑重點,用最簡潔的篇幅,展現出你個人獨一無二的亮點。面試需要多展現自己的思考過程,思考的深度。但這一切都基於過去的積累,就算是再平凡的工作,也能通過發現問題,探尋本源,自驅優化來鍛鍊自己,提升競爭力,從而贏得好機會的青睞。
? 由 NSObject *obj = [[NSObject alloc] init] 引發的一二事兒
這是一篇隨想型別的文章,由 [[NSObject alloc] init]
開始講起,覆蓋了 Objective-C 記憶體分配、ARC、@property
、atomic
等,看的過程遇到不是很清晰的知識點建議另找資料細讀。
? 剖析 ARM 64 架構中的 objc_msgSend
我們都知道 Objective-C 的"方法呼叫"其實是訊息轉發,[obj foo]
其實都會轉變成 objc_msgSend
呼叫。本文概述了 objc_msgSend
內部的程式碼處理流程,而在具體程式碼實現層面,整個訊息處理流程程式碼可以分為兩個部分:通過彙編程式碼實現的快速路徑部分(fast path),C 語言實現的慢路徑流程(slow path)。其中彙編程式碼對應快取表中查詢方法部分並且未命中時跳轉 C 程式碼來進行下一步處理。本文重點講了 arm64
架構下 objc_msgSend
彙編部分指令細節。
? 構建流暢的人機互動
今年 iOS 花了很大的功夫在優化系統基礎體驗上,甚至在 WWDC 裡專門開一個 session 來講如何構建流暢的人機互動。這篇文章的作者在看了這個 session 之後有感而發寫了這篇文章,在介紹和總結 session 內容的同時,還動手通過程式碼實現了那些 Design Tips,裡面特定互動的最佳實現和動畫實現的思路都非常棒,推薦一看。
? 血淚總結:如何從微信小程式的坑跳進支付寶小程式的大坑
支付寶小程式也在公測之中,開發者可以自由申請進行體驗。不同於微信小程式的社交傳播場景,在一些線下支付場景使用支付寶小程式也能獲得很多流量,對產品也是大有助益,因為遷移成本低,也是值得嘗試。
本文雖說是血淚總結,跳進大坑,但其實從程式碼的角度來看支付寶小程式的程式碼規範與API和微信小程式相比,真的是非常非常的近似,只有一些細節的差異。如果你的微信小程式已經很成熟了,那麼嘗試支付寶小程式將會沒有障礙,畢竟微信已經成熟了如果差異很大就沒人會用支付寶小程式了。不過終究還存著API差異,如果打算一套程式碼然後通過前端工程化的方案同時適配2種小程式,那麼本文作者踩的這些坑值得關注。
? WubaRN分步打包流程
用官方命令打出來的 ReactNative(RN) JSBundle 都會帶上自身框架程式碼。如果每個 Bundle 都自帶框架程式碼的話,對於業務模組多的 App 來講就不是很友好了。所以很多公司都會採取將框架和基礎模組程式碼拆分出來,讓所有業務使用同一份基礎程式碼。
本文是 58無線技術 分享的一篇關於 RN 打包的文章,作者按照打包流程來解釋他們的 WubaRN 拆分打包的思路,同時也介紹瞭如何通過快取來加速打包。還在使用 RN 或對 RN 工程化感興趣的都可以瞭解下。
? NLLanguageRecognizer
在 iOS 12中,蘋果開放了更多機器學習的能力給開發者。NLLanguageRecognizer
便是其中的一員。本文介紹瞭如何使用NLLanguageRecognizer
判斷字串是屬於哪種語言,檢查拼寫錯誤和合成聲音。
? 5 分鐘教你成為會賺錢的獨立開發者
作者幾個月前辭去大公司 iOS 工程師的工作,成為了一名全職獨立開發者,目前已經在 App Store 釋出了 17 款 app,累計下載量超過 56W 次,其中兩款應用被 App Store 多次推薦。作者目前的獨立開發月收入已經與辭職之前持平,在這篇文章裡他會為你介紹如何把知識直接通過程式碼變成錢,包括獲得創意、建立付費和內購模式、優化 ASO 等等。
工具
Xcode::Install
Xcode::Install 是一款從命令列更新 Xcode 的工具,它可以幫助你安裝並管理多個版本的 Xcode。它使用了 Apple 的 開發者下載中心 來查詢並下載指定的版本。
Knil
Knil 是一款幫助你測試和驗證 Universal link 是否有效的工具。在 Knil 中輸入對應的 host,它就會幫你把對應的 apple-app-site-association 檔案下載到本地,並列出其中的 path 方便你進行測試。可以直接在 App Store 搜尋下載 Knil。
內推
北京-螞蟻金服 招iOS/安卓/前端開發
螞蟻金服招聘,負責支付寶會員及帳號業務線,地點北京國貿,金臺夕照地鐵站出口 100 米。雖然招聘連結只給了 iOS 的 JD,但前端/安卓/iOS 都要,要求相近。有興趣的同學歡迎將簡歷傳送到:weijing.wdf@alibaba-inc.com / weijing.wdf@antfin.com (同一個郵箱) 或這微博私信 @折騰範兒_味精 瞭解情況。
編輯內推
-
上海即刻:如果你認識聰明勤奮、膽大心細、有追求的工程師,那就來加入我們吧!任何推薦或簡歷可直接發給 Jason(即刻 iOS leader): jasy@okjike.com,或微博 @JasonYuh。
-
杭州/廣州/深圳 奇志科技招聘 iOS、前端:奇志科技自 2016 年起通過行業無人機協同工作流 Mesh 進入物聯網與人工智慧領域, 併成功為房地產、建築、測繪、電力巡檢等行業提供無人機解決方案。感謝可以微博上私信 @沒故事的卓同學 瞭解。
-
深圳頭條研發中心誠招各路 iOS 好手一起做取悅自己的專案:如想了解更多深圳頭條的資訊,可以加小T微信:tomtan,切磋技術和聊情懷都可以喔~~~~
-
位元組跳動北京 iOS 團隊持續招人中:簡歷可以傳送到郵箱 raozhizhen@bytedance.com,或者新增我(@AidenRao)的微信 jingmu1994 瞭解更多公司及崗位資訊。
-
百度教育事業部招 iOS 開發:百度教育事業部,地點:北京西二旗。部門下面有百度閱讀,百度文庫,百度愛聽等 App 產品。團隊技術氛圍濃厚,有興趣的同學歡迎將簡歷傳送到我的郵箱:lizelei@baidu.com。
關注我們
我們開通了公眾號,每期釋出時公眾號會推送訊息,歡迎關注。
同時也支援了 RSS 訂閱:github.com/SwiftOldDri… 。
本期編輯
@沒故事的卓同學,@四娘,@享耳先森,@Damonwong,@折騰範兒_味精,@張嘉夫,@AidenRao,@Parsifal,@aaaron7,@方秋枋,kyo,tom510230,anotheren,水水,looping,@JasonYuh,@老老老老老老老驢
說明
? 表示需翻牆,? 表示編輯推薦
預計閱讀時間:? 很快就能讀完(1 - 10 mins);? 中等 (10 - 20 mins);? 慢(20+ mins)