43篇 《iOS開(kāi)發(fā)高手課》已完成米奸,后面會(huì)對(duì)內(nèi)容進(jìn)行迭代师倔,豐富下內(nèi)容和配圖悔叽。最近畫(huà)了張 iOS 開(kāi)發(fā)全景輿圖莱衩,還有相關(guān)一些資料整理,方便我平時(shí)開(kāi)發(fā) App 時(shí)參看娇澎。輿圖如下:
接下來(lái)笨蚁,我按照 iOS 開(kāi)發(fā)地圖的順序,和你推薦一些相關(guān)的學(xué)習(xí)資料。
實(shí)例
學(xué)習(xí) iOS 開(kāi)發(fā)最好是從學(xué)習(xí)一個(gè)完整的 App 入手括细,GitHub上的Open-Source iOS Apps
項(xiàng)目伪很,收錄了大量開(kāi)源的完整 App 例子,比如 Hacker News Reader 等已經(jīng)上架了 App Store 的應(yīng)用程序奋单,所有例子都會(huì)標(biāo)注是否上架 App Store的锉试、所使用開(kāi)發(fā)語(yǔ)言、推薦等級(jí)等信息辱匿,有利于進(jìn)行選擇學(xué)習(xí)键痛。
開(kāi)發(fā)一個(gè)完整的 App 也有最佳實(shí)踐,這里有份最佳實(shí)踐可以參考匾七。
下面兩個(gè)教程網(wǎng)站都會(huì)手把手通過(guò)實(shí)例教你怎么動(dòng)手學(xué)習(xí) iOS 各個(gè)知識(shí)點(diǎn)絮短。
iOS 基礎(chǔ)
完整開(kāi)發(fā)了多個(gè) App 后,為了更好昨忆、更快的掌握開(kāi)發(fā)丁频,你就會(huì)有需要了解更多 iOS 基礎(chǔ)知識(shí)的訴求,包括列表的優(yōu)化邑贴、高效界面布局開(kāi)發(fā)席里、圖表圖形、圖片處理拢驾、動(dòng)畫(huà)多媒體等等奖磁。
圖形渲染 Metal 框架的學(xué)習(xí)可以參看下面四篇文章
iOS 系統(tǒng)
iOS 基礎(chǔ)學(xué)習(xí)到一定程度就需要了解 App 是如何在系統(tǒng)中工作的,系統(tǒng)提供了什么基礎(chǔ)功能繁疤,提供了哪些界面控件等等咖为。
擴(kuò)展知識(shí)可以閱讀下面四本書(shū):
- 《深入解析Mac OS X & iOS操作系統(tǒng)》
- 《現(xiàn)代操作系統(tǒng)》
- 《深入理解計(jì)算機(jī)系統(tǒng)》
- 《程序員的自我修養(yǎng)》
編程語(yǔ)言
編程語(yǔ)言的學(xué)習(xí)可以參考官方手冊(cè),對(duì)于 Runtime 的擴(kuò)展文章閱讀:
- Objective-C 消息發(fā)送與轉(zhuǎn)發(fā)機(jī)制原理
- 神經(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 出院第三天——如何正確使用
編程語(yǔ)言 Swift 推薦閱讀書(shū)籍是《Swift 進(jìn)階》稠腊、《函數(shù)式Swift》躁染。大量Swift Playground 可以了解 Swift 編程語(yǔ)言的特性,這里有份整理 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. 吞彤。這里有本在線書(shū)詳細(xì)講解了 Combine
《Using Combine》 。
架構(gòu)相關(guān)擴(kuò)展閱讀可以參看 iOS 組件化相關(guān)討論文章匯總 | KANGZUBIN 叹放。
設(shè)計(jì)模式推薦書(shū)籍如下:
- 《設(shè)計(jì)模式 可復(fù)用面向?qū)ο筌浖幕A(chǔ)》
- 《Objective-C 編程之道:iOS設(shè)計(jì)模式解析》
- 《Head First 設(shè)計(jì)模式》
- 《大話設(shè)計(jì)模式》
開(kāi)發(fā)工具
開(kāi)發(fā)的代碼多了饰恕,開(kāi)發(fā)效率和開(kāi)發(fā)質(zhì)量的提升就越來(lái)越離不開(kāi)開(kāi)發(fā)工具了。
iOS 開(kāi)發(fā)工具 Xcode井仰、Instrument 的使用學(xué)習(xí)懂盐,推薦看蘋(píng)果開(kāi)發(fā)者大會(huì) WWDC 的 Session 視頻。
擴(kuò)展閱讀文章推薦:
- The Architecture of Open Source Application
- Writing AST matchers for libclang
- 使用 OCLint 自定義 MVVM 規(guī)則
- iOS 增量代碼覆蓋率檢測(cè)實(shí)踐
閱讀書(shū)籍推薦:
- 《Getting Started with LLVM Core Libraries》
- 《Modern Compiler Implementation in C》
- 《Compiler》
開(kāi)發(fā)完成
當(dāng)開(kāi)發(fā)完成后就需要進(jìn)行調(diào)試糕档、持續(xù)化交付莉恼、測(cè)試拌喉。
LLDB 調(diào)試推薦先看官方指南,再看這篇“與調(diào)試器共舞 - LLDB 的華爾茲”俐银。為了更好的調(diào)試體驗(yàn)擴(kuò)展 LLDB 可以參看這篇文章“How to Extend LLDB to Provide a Better Debugging Experience”尿背。
另外,這個(gè)網(wǎng)址收錄了各種調(diào)試資料捶惜。
持續(xù)化交付可以參看各大公司的實(shí)踐田藐,比如:
- 知乎 iOS 客戶端工程化工具 - Venom
- 百度App iOS工程化實(shí)踐: EasyBox破冰之旅
- 如何實(shí)現(xiàn)“持續(xù)集成”?淘系閑魚(yú)把研發(fā)效率翻了個(gè)翻
測(cè)試擴(kuò)展閱讀推薦文章如下:
- TDD的iOS開(kāi)發(fā)初步以及Kiwi使用入門(mén)
- Kiwi 使用進(jìn)階 Mock, Stub, 參數(shù)捕獲和異步測(cè)試
- Unit Testing
- 客戶端自動(dòng)化測(cè)試研究
- PICK一下吱七,iOS自動(dòng)化測(cè)試新方案出道
- 愛(ài)奇藝基于AI的移動(dòng)端自動(dòng)化測(cè)試框架的設(shè)計(jì)
上線后
開(kāi)發(fā)完成后汽久,做完測(cè)試,就可以上線了踊餐。上線后還需要做大量監(jiān)控保證用戶使用 App 的高可用性和好體驗(yàn)景醇。動(dòng)態(tài)化保證發(fā)版靈活和問(wèn)題的快速修復(fù)。
推薦的擴(kuò)展閱讀如下:
- iOS應(yīng)用啟動(dòng)性能優(yōu)化資料
- iOS啟動(dòng)時(shí)間優(yōu)化
- Understanding and Analyzing Application Crash Reports
- PLCrashreporter源碼分析其一
- PLCrashreporter源碼分析其二
- How Not to Crash
- Logan:美團(tuán)點(diǎn)評(píng)的開(kāi)源移動(dòng)端基礎(chǔ)日志庫(kù)
- Hook Objective-C Block with Libffi
- Hot or Not? The Benefits and Risks of iOS Remote Hot Patching
計(jì)算機(jī)基礎(chǔ)
經(jīng)歷多次 App 開(kāi)發(fā)到上線后的過(guò)程吝岭,碰到問(wèn)題三痰,解決問(wèn)題,越發(fā)覺(jué)得計(jì)算機(jī)基礎(chǔ)的重要性窜管。牢固的基礎(chǔ)能有利于碰到問(wèn)題時(shí)快速定位和解決散劫。
推薦擴(kuò)展閱讀文章和資源如下:
- 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)控
通用知識(shí)
iOS 開(kāi)發(fā)中還有很多和其他計(jì)算機(jī)領(lǐng)域相通的知識(shí),比如渲染幕帆、數(shù)據(jù)庫(kù)获搏、網(wǎng)絡(luò)等。
推薦擴(kuò)展閱讀文章有:
網(wǎng)絡(luò)相關(guān)文章推薦如下:
- 百度App網(wǎng)絡(luò)深度優(yōu)化系列《三》弱網(wǎng)優(yōu)化
- iOS 流量監(jiān)控分析 | 周小魚(yú)のCODE_HOME
- TCP/IP(一):數(shù)據(jù)鏈路層
- TCP/IP(二):IP 協(xié)議
- TCP/IP(三):IP 協(xié)議相關(guān)技術(shù)
- TCP/IP(四):TCP 與 UDP 協(xié)議簡(jiǎn)介
- TCP/IP(五):TCP 協(xié)議詳解
- TCP/IP(六):HTTP 與 HTTPS 簡(jiǎn)介
- 攜程App的網(wǎng)絡(luò)性能優(yōu)化實(shí)踐
- 美團(tuán)點(diǎn)評(píng)移動(dòng)網(wǎng)絡(luò)優(yōu)化實(shí)踐
- 萬(wàn)人低頭時(shí)代失乾,支付寶APP無(wú)線網(wǎng)絡(luò)性能該如何保障
- QQ空間在生產(chǎn)環(huán)境使用QUIC協(xié)議的經(jīng)驗(yàn)
- 美圖HTTPS優(yōu)化探索與實(shí)踐
- 九個(gè)問(wèn)題從入門(mén)到熟悉 HTTPS
- 試圖取代 TCP 的 QUIC 協(xié)議到底是什么
- 小談 HTTP 中的編碼
- 利用 WireShark 深入調(diào)試網(wǎng)絡(luò)請(qǐng)求
- 關(guān)于 iOS HTTP2.0 的一次學(xué)習(xí)實(shí)踐 - 掘金
- 移動(dòng) APP 網(wǎng)絡(luò)優(yōu)化概述 ? bang’s blog
- GYHttpMock:iOS HTTP請(qǐng)求模擬工具 | WeRead團(tuán)隊(duì)博客
- YTKNetwork源碼解析 | J_Knight_
- LefexWork/iOS 需要掌握的 HTTP 知識(shí).md at master · lefex/LefexWork · GitHub
- LefexWork/以不一樣的方式理解SDWebImage.md at master · lefex/LefexWork · GitHub
- Alamofire的設(shè)計(jì)之道 - Leo的專欄 - CSDN博客
專有知識(shí)
專有知識(shí)我就不展開(kāi)說(shuō)了颜凯,參考上面輿圖中標(biāo)注的知識(shí)點(diǎn)去檢索你需要的就可以了。
視野
推薦手冊(cè):
開(kāi)源控件:
- iOS Example
- Cocoa Controls
- awesome-swift
- Swift 開(kāi)源項(xiàng)目精選 - 應(yīng)用架構(gòu)角度
- Swift 開(kāi)源項(xiàng)目精選導(dǎo)圖
- SwiftGuide
- Swift 開(kāi)源項(xiàng)目團(tuán)隊(duì)介紹
- Swift 知名開(kāi)發(fā)者介紹
視頻推薦 Swift Talk - objc.io 仗扬。
這里的 iOS 博客都很值得訂閱,GitHub - awesome-tips/blogs: 行業(yè)優(yōu)質(zhì)博客匯總蕾额。
其他資源參看上面的地圖早芭。