老司機 iOS 週報,只為你呈現有價值的資訊。
你也可以為這個專案出一份力,如果發現有價值的資訊、文章、工具等可以到 Issues 裡提給我們,我們會盡快處理。記得寫上推薦的理由哦。有建議和意見也歡迎到 Issues 提出。
文章
? How not to be a mediocre developer
成為優秀程式設計師的 12 條 Tips,涉及到程式碼習慣,學習方法以及態度等多個方面,值得大家學習和思考。
? 移動應用架構演變及泛前端趨勢下移動團隊破局
看到這樣的標題是不是被嚇了一跳。我一直覺得一般標題太牛逼的文章都會有點刻意感,不過看完這篇文章之後打消了我的偏見。這篇文章核心是兩部分,首先是迴歸了移動端工程體系發展的歷史,然後是討論了在現在這個局勢下,技術團隊和工程師個人的發展方向。作者分析總結的很到位,雖然作者是從 Android 工程師的角度來看的,但是很多建議對 iOS 工程師也同樣適用。
文章的最後作者提煉了目前值得投入的幾大方向:容器化技術、跨平臺開發方案(RN,Weex,Flutter),體系化運維以及垂直領域技術(音視訊,圖形影像)。對於目前覺得自己技術深度提升遇到瓶頸的同學,可以參考。
? mock in iOS
mock 並不是一種特定的操作或者程式設計手段,它更像是一種剖析工程細節來解決特殊環境下難題的解決思路。無論如何,如果我們想要繼續在開發領域上繼續深入,必然要學會從更多的角度和使用更多的工具來理解和解決開發上的難題,而 mock 絕對是一種值得學習的開發思想。本文作者詳細列出了什麼時候用 mock 以及如何實現 mock 。
? How to write a good software design doc
一般來說在一個大團隊或者大公司裡,開始動手實現一個新功能之前,開發者需要寫好 Design Doc ,然後進行 Design Review 。Design Doc 作為記錄,描述設計,並闡述未來實現方案的文件,其重要性不言而喻。然而現實中很多人並不知道怎麼去寫一份好的 Design Doc 。
而在本文中,作者從她的角度出發,闡述了她心中理想的 Design Doc 的樣子。作者同時還在文中提出了幾個合理的建議用來判斷一個 Design Doc 是不是一個好的 Design Doc , 值得學習。
? 2018年 iOS 面試心得
關於 iOS 面試的詳細攻略,適合最近想要換工作的同學們學習。如果想成為一個合格的 iOS 工程師,贏得面試官的認可,必須要沉下心來,多花精力在各個領域裡耕耘,不光是日常應用層面,也需要練習資料結構和演算法基本功,同時調整好心態。作者分別從這幾個角度出發,給出了自己的一些經驗和建議。
? Bug Reporting
“Radar” 是蘋果的 bug 追蹤系統,不僅可以用於追蹤軟體、硬體中的功能和 bug,還適用於追蹤文件、本地化、web 屬性甚至是 Siri 回答的問題。對於蘋果員工來說,Radar 指導了從問題報告到問題驗證的整個工作流程。但外部開發者是無法直接訪問 Radar 的,所以在這篇文章裡,知名 iOS 開發者 Mattt 會為你介紹作為外部開發者應該如何報告 bug,包括使用 Apple Bug Reporter、Feedback Assistant 以及一些第三方工具,此外還包括如何撰寫 bug 報告,最後還介紹瞭如何避免讓自己提交的 bug 報告石沉大海、杳無音訊。
? 蘋果 iOS 系統原始碼思考:物件的引用計數儲存在哪裡?- 從 runtime 原始碼得到的啟示
對框架原理的掌握程度一直是大廠招人考核的一個重點。這篇文章通過對 Objc 原始碼抽絲剝繭,層層遞進地從底層原理解釋了 OC 是如何實現引用計數的記憶體管理方式。這類文章總是不可避免地會包含大量原始碼片段,不過作者能通過自己的閱讀和理解後,梳理出一個清晰的學習目錄,且對每段原始碼的分析都比較到位,很值得同在啃底層原始碼的同學借鑑。
? WWDC18: A Basic Guide to App Store Connect API
Apple 將 Apple Developer Portal 和 iTunes Connect 結合起來,並將其重新命名為“App Store Connect“。也帶來了一些新的改變:
- Transporter 工具支援 linux 系統
- TestFlight 支援可以直接下載安裝的公開連結
- 銷售和趨勢頁面的展示
- 更強大的 App Store Connect 移動端
App Store Connect API 是基於 JWT(JSON Web token) 的標準 RESTful API,具備跨平臺性以及擁有完整的使用說明文件。通過該 API 我們可以自動化的去管理幾乎所有 App Store 相關的內容。例如管理證書、管理配置檔案,管理裝置和安裝包 ID,管理使用者、設定使用者角色以及 app 的訪問許可權,管理 TestFlight、公測使用者以及公開連結,下載財務和銷售報告。在使用 App Store Connect API 之前,你必須生成一個 token。蘋果使用 JWT(JSON Web Token)標準在 App Store Connect 和您的終端裝置之間建立連線。登入 App Store Connect 網站建立新的 API 金鑰,根據金鑰生成有時限的 JWT token,就可以通過傳遞授權標頭來使用 App Store Connect API。
? An Introduction to AR Quick Look in iOS 12
在 iOS 12 裡 Quick Look 支援了預覽 AR 物件,也就是說可以在郵件、資訊和任意支援 Quick Look 的應用中分享 .usdz
檔案,接收者可以開啟並檢視 AR 物件而不需要下載其它 app。而且 AR Quick Look 不僅侷限於在 app 中使用,甚至連網頁也可以整合 AR Quick Look!這篇教程會教你如何在 iOS 應用中整合 AR Quick Look,並且還會用 GitHub Pages 構建一個非常基本的 HTML 網頁,為你展示如何給網站新增 AR Quick Look 功能。
? Automatic Screenshots With fastlane snapshot
Fastlane 是一個自動化的工具集,主要用於自動化的打包,釋出等工作。本文介紹的是 Fastlane 的一個控制元件,主要用於自動截圖工作。自動截圖在平時的開發中可能使用的不多,但在自動化測試領域上,是很重要的一個模組,例如對錯誤時候頁面的現場截圖,測試結果的比對等等。Fastlane 只需要簡簡單單的一點程式碼,以及一些設定,就可以整合到我們的專案中,使用起來非常方便。對自動化方面有需求的同學不妨看一下。
? Refactoring Swift code for testability
程式碼的可測試性是衡量程式碼質量的一個重要標準。如果你還沒有寫過測試用例,那我建議你應該先補一下這方面的功課。這篇文章為如何更好的測試你的 Swift 程式碼,提出了兩點重構思路:純粹的函式(Pure functions)與依賴注入(Dependency Injection),並都給出了示例程式碼。值得想要提高程式碼質量、以及獲得新思路的同學借鑑。
?GraphQL 在微服務架構中的實踐
之前老司機週報已經介紹了 GraphQL 與 RESTful 之間的異同,GraphQL 對於資源的管理提供了比 RESTful 更多的靈活性,同時也增加了後臺服務治理的複雜性。對於大型團隊+大型系統的協同開發場景,微服務是已被證明有效的一種後臺架構方案,然而微服務架構本身也是一種複雜抽象的架構。當靈活多變的 CGI 設計方案遇上覆雜抽象的後臺架構,需要考慮的事情將會異常的多,大部分情況下都要摸著石頭過河。本文作者通過半年多以來的實踐經驗,闡述了在工作當中遇到的問題和採用的解決問題的思路,提供了很多很有價值的經驗供各位架構師參考。
?? The Lotus MVC Pattern: Solving the 5 Issues of the MVC, MVVM and VIPER patterns
長文宜細讀。
這是一篇長文,作者分析了現有架構的優缺點,之後提出了自己的架構:Lotus MVC (名稱的由來是此架構下各模組之間的類圖非常象蓮花)
,文章大題分為三個部分:
- 現有 MVC、MVVM、VIPER 架構是怎麼分層的,解決了哪些問題,但帶來或還有哪些問題沒解決;
- Lotus MVC 各模組的角色及關係;
- 通過 Github client app 來講解 Lotus MVC。
程式碼
美團客戶端響應式框架EasyReact開源啦
在我們日常開發中,狀態可以說無處不在,就像筆者最近參與的一個專案的開發,一個資料的改變牽扯到多出UI的變化,這時候,就很自然想到用響應式程式設計的方式去解決這個問題。恰好,就在最近,業界期盼已久的響應式框架 EasyReact 終於開源了。美團一直是 FRP(函式響應式變成)的重度使用團隊。他們在此之前很早就引入了 ReactiveCocoa 這個框架,對推動 ReactiveCocoa 框架本身以及 FRP 的程式設計思想起到了重要的作用。但隨著美團業務及團隊的發展,在使用 RAC 上,美團也遇到了一些問題。例如 RAC 本身公認的學習曲線較為陡峭,除錯困難等問題。為了改善這些問題,同時保持響應式程式設計帶來的種種便利,美團團隊自研了響應式程式設計框架 EasyReact 。從官方的說法中,EasyReact 在效能上,測試的便利性上,寫法的統一上都更勝一籌。雖然目前筆者還不能確定這些說法是否都是對的,但無論如何,在響應式程式設計這一領域上,美團無疑帶給我們了一個很重磅的開源框架。對此方面有興趣的同學現在可以 Down 下來程式碼嘗試學習或者使用啦!
RxReduce
Redux 在前端是一個很流行的框架,在 iOS 上根據相同的思路與之對應的框架是 ReSwift。因為所有的變化都是響應狀態的變化,所以天生帶著響應式屬性,非常適合 Rx 體系。這次 Rx 社群推出了 RxReduce 來實現這個框架。所以如果現在專案裡打算使用單向資料流的架構,可以考慮接入 Rx 全家桶。
ZJAttributedText
ZJAttributedText 是一個富文字框架。和 YYText 對比起來,更輕量級,並且能通過鏈式呼叫進行富文字的樣式編輯。
Twitter Network Layer (TNL)
Twitter Network Layer (TNL) 是 Twitter 開源的一套基於 NSURLSession 的擴充套件性強且功能豐富的 iOS 網路層框架。建議對構建基礎網路層感興趣的同學都深入學習下,據說該框架在 Twitter 內部已經用了 4 年,並且最近 18 個月都是處於 no bugs 狀態,具體介紹可以看下 Twitter 官方釋出的部落格文章 ? Introducing Twitter Network Layer iOS framework for open source。
內推
位元組跳動北京 iOS 團隊持續招人中
這是一家非常年輕的創業公司,充滿活力與激情,希望能有更多優秀的人,加入位元組跳動,一起讓人們看見更大的世界(今日頭條、西瓜視訊、悟空問答、懂車帝 、TopBuzz、News Republic...),也讓更多人的美好生活被看見(抖音、火山小視訊、Musical.ly、圖蟲、Faceu...),我的郵箱 raozhizhen@bytedance.com,或者新增我的微信 jingmu1994 瞭解更多公司及崗位資訊。
深圳頭條研發中心誠招各路 iOS 好手一起做取悅自己的專案
如想了解更多深圳頭條的資訊,可以加小T微信:tomtan,切磋技術和聊情懷都可以喔~~~~
杭州/廣州/深圳 奇志科技招聘 iOS、前端
奇志科技自 2016 年起通過行業無人機協同工作流 Mesh 進入物聯網與人工智慧領域, 併成功為房地產、建築、測繪、電力巡檢等行業提供無人機解決方案。Mesh 在運用 yarn, rollup, vue 等技術棧的同時,利用 Couchbase 設計多端資料同步方案,並深入研究 React Native。也可以微博上私信 @沒故事的卓同學 瞭解。
百度教育事業部招 iOS 開發
部門下面有百度閱讀,百度文庫,百度愛聽等 App 產品。團隊技術氛圍濃厚,有興趣的同學歡迎將簡歷傳送到我的郵箱:lizelei@baidu.com。
上海-加入即刻
即刻 iOS 團隊從一開始就使用純 Swift 開發,至今已有三年多時間,是國內較早大規模使用 Swift 的團隊。我們比較偏愛 RxSwift 和 Texture 等框架,追求和最優秀的工程師一起,用最高的標準做用起來最爽的 app。 如果你認識聰明勤奮、膽大心細、有追求的工程師,那就來加入我們吧!任何推薦或簡歷可直接發給 Jason(即刻 iOS leader): jasy@okjike.com,或微博 @JasonYuh。
北京-螞蟻金服 招iOS/安卓/前端開發
螞蟻金服招聘,負責支付寶會員及帳號業務線,地點北京國貿,金臺夕照地鐵站出口 100 米。雖然招聘連結只給了 iOS 的 JD,但前端/安卓/iOS 都要,要求相近。有興趣的同學歡迎將簡歷傳送到:weijing.wdf@alibaba-inc.com / weijing.wdf@antfin.com (同一個郵箱) 或這微博私信 @折騰範兒_味精 瞭解情況。
關注我們
我們開通了公眾號,每期釋出時公眾號會推送訊息,歡迎關注。
同時也支援了 RSS 訂閱:github.com/SwiftOldDri… 。
本期編輯
@沒故事的卓同學,@四娘,@mmoaay,@享耳先森,@Damonwong,@折騰範兒_味精,@張嘉夫,@AidenRao,@Parsifal,@aaaron7,@方秋枋,kyo,tom510230,anotheren,水水,looping,@JasonYuh,@老老老老老老老驢
說明
? 表示需翻牆,? 表示編輯推薦
預計閱讀時間:? 很快就能讀完(1 - 10 mins);? 中等 (10 - 20 mins);? 慢(20+ mins)