戴明大神的總結(jié):
接下來,我按照 iOS 開發(fā)地圖的順序,和你推薦一些相關(guān)的學(xué)習(xí)資料。
實例
學(xué)習(xí) iOS 開發(fā)最好是從學(xué)習(xí)一個完整的 App 入手,GitHub上的Open-Source iOS Apps
項目,收錄了大量開源的完整 App 例子,比如 Hacker News Reader 等已經(jīng)上架了 App Store 的應(yīng)用程序,所有例子都會標注是否上架 App Store的、所使用開發(fā)語言、推薦等級等信息,有利于進行選擇學(xué)習(xí)。
開發(fā)一個完整的 App 也有最佳實踐,這里有份最佳實踐可以參考。
下面兩個教程網(wǎng)站都會手把手通過實例教你怎么動手學(xué)習(xí) iOS 各個知識點。
iOS 基礎(chǔ)
完整開發(fā)了多個 App 后,為了更好、更快的掌握開發(fā),你就會有需要了解更多 iOS 基礎(chǔ)知識的訴求,包括列表的優(yōu)化、高效界面布局開發(fā)、圖表圖形、圖片處理、動畫多媒體等等。
圖形渲染 Metal 框架的學(xué)習(xí)可以參看下面四篇文章
iOS 系統(tǒng)
iOS 基礎(chǔ)學(xué)習(xí)到一定程度就需要了解 App 是如何在系統(tǒng)中工作的,系統(tǒng)提供了什么基礎(chǔ)功能,提供了哪些界面控件等等。
擴展知識可以閱讀下面四本書:
- 《深入解析Mac OS X & iOS操作系統(tǒng)》
- 《現(xiàn)代操作系統(tǒng)》
- 《深入理解計算機系統(tǒng)》
- 《程序員的自我修養(yǎng)》
編程語言
編程語言的學(xué)習(xí)可以參考官方手冊,對于 Runtime 的擴展文章閱讀:
- Objective-C 消息發(fā)送與轉(zhuǎn)發(fā)機制原理
- 神經(jīng)病院Objective-C Runtime入院第一天——isa和Class( https://halfrost.com/objc_runtime_isa_class/ )
- 神經(jīng)病院 Objective-C Runtime 住院第二天——消息發(fā)送與轉(zhuǎn)發(fā)
- 神經(jīng)病院 Objective-C Runtime 出院第三天——如何正確使用
編程語言 Swift 推薦閱讀書籍是《Swift 進階》、《函數(shù)式Swift》。大量Swift Playground 可以了解 Swift 編程語言的特性,這里有份整理 GitHub - uraimo/Awesome-Swift-Playgrounds: A List of Awesome Swift Playgrounds 。這份資料匯總了 SwiftUI 的資料 GitHub - Juanpe/About-SwiftUI: Gathering all info published, both by Apple and by others, about new framework SwiftUI. 。這里有本在線書詳細講解了 Combine
《Using Combine》 。
架構(gòu)相關(guān)擴展閱讀可以參看 iOS 組件化相關(guān)討論文章匯總 | KANGZUBIN 。
設(shè)計模式推薦書籍如下:
- 《設(shè)計模式 可復(fù)用面向?qū)ο筌浖幕A(chǔ)》
- 《Objective-C 編程之道:iOS設(shè)計模式解析》
- 《Head First 設(shè)計模式》
- 《大話設(shè)計模式》
開發(fā)工具
開發(fā)的代碼多了,開發(fā)效率和開發(fā)質(zhì)量的提升就越來越離不開開發(fā)工具了。
iOS 開發(fā)工具 Xcode、Instrument 的使用學(xué)習(xí),推薦看蘋果開發(fā)者大會 WWDC 的 Session 視頻。
擴展閱讀文章推薦:
- The Architecture of Open Source Application
- Writing AST matchers for libclang
- 使用 OCLint 自定義 MVVM 規(guī)則
- iOS 增量代碼覆蓋率檢測實踐
閱讀書籍推薦:
- 《Getting Started with LLVM Core Libraries》
- 《Modern Compiler Implementation in C》
- 《Compiler》
開發(fā)完成
當(dāng)開發(fā)完成后就需要進行調(diào)試、持續(xù)化交付、測試。
LLDB 調(diào)試推薦先看官方指南,再看這篇“與調(diào)試器共舞 - LLDB 的華爾茲”。為了更好的調(diào)試體驗擴展 LLDB 可以參看這篇文章“How to Extend LLDB to Provide a Better Debugging Experience”。
另外,這個網(wǎng)址收錄了各種調(diào)試資料。
持續(xù)化交付可以參看各大公司的實踐,比如:
測試擴展閱讀推薦文章如下:
- TDD的iOS開發(fā)初步以及Kiwi使用入門
- Kiwi 使用進階 Mock, Stub, 參數(shù)捕獲和異步測試
- Unit Testing
- 客戶端自動化測試研究
- PICK一下,iOS自動化測試新方案出道
- 愛奇藝基于AI的移動端自動化測試框架的設(shè)計
上線后
開發(fā)完成后,做完測試,就可以上線了。上線后還需要做大量監(jiān)控保證用戶使用 App 的高可用性和好體驗。動態(tài)化保證發(fā)版靈活和問題的快速修復(fù)。
推薦的擴展閱讀如下:
- iOS應(yīng)用啟動性能優(yōu)化資料
- iOS啟動時間優(yōu)化
- Understanding and Analyzing Application Crash Reports
- PLCrashreporter源碼分析其一
- PLCrashreporter源碼分析其二
- How Not to Crash
- Logan:美團點評的開源移動端基礎(chǔ)日志庫
- Hook Objective-C Block with Libffi
- Hot or Not? The Benefits and Risks of iOS Remote Hot Patching
計算機基礎(chǔ)
經(jīng)歷多次 App 開發(fā)到上線后的過程,碰到問題,解決問題,越發(fā)覺得計算機基礎(chǔ)的重要性。牢固的基礎(chǔ)能有利于碰到問題時快速定位和解決。
推薦擴展閱讀文章和資源如下:
- Algorithms and data structures in Swift, with explanations!
- iOS Memory Deep Dive
- iOS App Performance: Memory
- No pressure, Mon! Handling low memory conditions in iOS and Mavericks
- 從零構(gòu)建 Dispatch Queue
- Threading Programming Guide(1)
- Threading Programming Guide(2)
- Threading Programming Guide(3)
- Swift 中的鎖和線程安全
- 淺談一種解決多線程野指針的新思路
- 深入理解 GCD
- 深入淺出GCD
- 解密 Runloop
- Matrix-iOS 卡頓監(jiān)控
通用知識
iOS 開發(fā)中還有很多和其他計算機領(lǐng)域相通的知識,比如渲染、數(shù)據(jù)庫、網(wǎng)絡(luò)等。
推薦擴展閱讀文章有:
網(wǎng)絡(luò)相關(guān)文章推薦如下:
- 百度App網(wǎng)絡(luò)深度優(yōu)化系列《三》弱網(wǎng)優(yōu)化
- iOS 流量監(jiān)控分析 | 周小魚のCODE_HOME
- TCP/IP(一):數(shù)據(jù)鏈路層
- TCP/IP(二):IP 協(xié)議
- TCP/IP(三):IP 協(xié)議相關(guān)技術(shù)
- TCP/IP(四):TCP 與 UDP 協(xié)議簡介
- TCP/IP(五):TCP 協(xié)議詳解
- TCP/IP(六):HTTP 與 HTTPS 簡介
- 攜程App的網(wǎng)絡(luò)性能優(yōu)化實踐
- 美團點評移動網(wǎng)絡(luò)優(yōu)化實踐
- 萬人低頭時代,支付寶APP無線網(wǎng)絡(luò)性能該如何保障
- QQ空間在生產(chǎn)環(huán)境使用QUIC協(xié)議的經(jīng)驗
- 美圖HTTPS優(yōu)化探索與實踐
- 九個問題從入門到熟悉 HTTPS
- 試圖取代 TCP 的 QUIC 協(xié)議到底是什么
- 小談 HTTP 中的編碼
- 利用 WireShark 深入調(diào)試網(wǎng)絡(luò)請求
- 關(guān)于 iOS HTTP2.0 的一次學(xué)習(xí)實踐 - 掘金
- 移動 APP 網(wǎng)絡(luò)優(yōu)化概述 ? bang’s blog
- GYHttpMock:iOS HTTP請求模擬工具 | WeRead團隊博客
- YTKNetwork源碼解析 | JKnight
- LefexWork/iOS 需要掌握的 HTTP 知識.md at master · lefex/LefexWork · GitHub
- LefexWork/以不一樣的方式理解SDWebImage.md at master · lefex/LefexWork · GitHub
- Alamofire的設(shè)計之道 - Leo的專欄 - CSDN博客
專有知識
專有知識我就不展開說了,參考上面輿圖中標注的知識點去檢索你需要的就可以了。
視野
推薦手冊:
開源控件:
- iOS Example
- Cocoa Controls
- awesome-swift
- Swift 開源項目精選 - 應(yīng)用架構(gòu)角度
- Swift 開源項目精選導(dǎo)圖
- SwiftGuide
- Swift 開源項目團隊介紹
- Swift 知名開發(fā)者介紹
視頻推薦 Swift Talk - objc.io 。
這里的 iOS 博客都很值得訂閱,GitHub - awesome-tips/blogs: 行業(yè)優(yōu)質(zhì)博客匯總。
- 本文作者: 戴銘
- 本文鏈接: http://ming1016.github.io/2019/07/29/ios-map/