iOS學習棧

序言

最近正在重新系統的學習iOS,收集了一些自己認為不錯的博客和資料和大家分享。有??標記的是我看過覺得詳細易懂的文章。

底層

isa和Class??--參考:(What is a meta-class in Objective-C?[譯]Objective-C中的meta-class什么iOS 程序 main 函數之前發生了什么從 NSObject 的初始化了解 isa深入解析 ObjC 中方法的結構刨根問底 Objective-C Runtime(1)- Self & Super)
消息發送與轉發??--參考:(Objective-C 消息發送與轉發機制原理Hmmm, What’s that Selector?dyld: Dynamic Linking On OS X*)
如何正確使用runtime??
深入理解Objective-C:Category??--參考:(《Objective-C +load vs +initialize》iOS動態性(二)可復用而且高度解耦的用戶統計埋點實現KVO中的缺陷
深入研究 Block 捕獲外部變量和 __block 實現原理??--參考:(A look inside blocks: Episode 3 (Block_copy)
深入研究 Block 用 weakSelf、strongSelf、@weakify、@strongify 解決循環引用--參考:(關于ARC詳細的文檔
iOS 如何實現 Aspect Oriented Programming
iOS底層原理總結 - 探尋OC對象的本質
iOS底層原理總結 - 探尋Class的本質
iOS底層原理總結 - 探尋KVO本質
KVC原理剖析
KVC解析(一) —— 基本了解
KVC解析(二) —— 不可不知的賦值深層次原理
KVC解析(三) —— 不可不知的取值深層次原理
KVC解析(四) —— keyPath的深度解析
KVC解析(五) —— KVC幾種典型的異常處理
KVC解析(六) —— KVC容器類及深層次原理
KVC解析(七) —— KVC正確性的驗證
AutoreleasePool底層實現原理 - 簡書
OS底層原理總結 - RunLoop
RunLoop入門 看我就夠了
RunLoop已入門?不來應用一下?
深入理解RunLoop - 簡書
深入理解RunLoop??
iOS開發-RunLoop的退出方式 - 簡書
iOS引用計數管理之揭秘計數存儲
iOS開發之weak底層實現原理
Objective-C runtime機制(6)——weak引用的底層實現原理
iOS總結-NSArray的底層實現 - qq_28551705的博客 - CSDN博客
關于NSArray的二三事 - 簡書
如何自己動手實現 KVO
NSString的內存管理之 __NSCFConstantString、NSTaggedPointerString、__NSCFString

CALayer

CALayer圖層簡介

CoreGraphics

Quartz 2D編程指南(一)—— 簡介
Quartz 2D編程指南(二)—— Quartz 2D概覽
Quartz 2D編程指南(三)—— 圖形上下文
Quartz 2D編程指南(四)—— Paths路徑(一)
Quartz 2D編程指南(五)—— Paths路徑(二)
Quartz 2D編程指南(六)—— 顏色和顏色空間
Quartz 2D編程指南(七)—— 變換
Quartz 2D編程指南(八)—— Patterns圖案樣式
Quartz 2D編程指南(九)—— 陰影
Quartz 2D編程指南(十)—— 漸變
Quartz 2D編程指南(十一)—— 透明
Quartz 2D編程指南(十二)—— Quartz 2D中的數據管理
Quartz 2D編程指南(十三)—— 位圖圖像和圖像蒙版(一)
Quartz 2D編程指南(十四)—— 位圖圖像和圖像蒙版(二)
Quartz 2D編程指南(十五)——Core Graphics圖層繪制
Quartz 2D編程指南(十六)——PDF文檔創建,查看和轉換
Quartz 2D編程指南(十七)—— PDF文件解析
Quartz 2D編程指南(十八)——PostScript轉換
以上文章全部讀完對Quartz 2D會有一個全面的了解

CoreText入門(一)-文本繪制
CoreText入門(二)-繪制圖片
CoreText進階(三)-事件處理
CoreText進階(四)-文字行數限制和顯示更多
CoreText進階(五)- 文字排版樣式和效果
CoreText進階(六)-內容大小計算和自動布局
CoreText進階(七)-添加自定義View和對其

ImageI/O

iOS中ImageIO框架詳解與應用分析
iOS 圖片壓縮限制大小最優解
位圖的結構

多線程

iOS Swift GCD 開發教程
深入淺出GCD??
iOS 多線程:『GCD』詳盡總結
iOS Swift GCD 開發教程
深入淺出GCD(滴滴工程師博客)
iOS多線程-各種線程鎖的簡單介紹 - 簡書
線程死鎖
NSOperation的進階使用和簡單探討

網絡

原理

一篇文章帶你詳解 HTTP 協議(網絡協議篇一)
一篇文章帶你熟悉 TCP/IP 協議(網絡協議篇二)
HTTPS詳解??
iOS安全系列之一:HTTPS
淺析HTTPS中間人攻擊與證書校驗
SSL三種類型證書有什么區別
為什么Tcp連接的創立需要三次握手 ,而斷開需要四次揮手_CSDN博客
iOS中長連接的那些事

基礎

NSURLSession系列(一) - NSURLConfiguration
NSURLSession系列(二)- 創建Session對象
NSURLSession系列(三)-請求過程
NSURLSession系列(四)- 設置緩存
NSURLSession系列(五)- cookie
NSURLSession系列(六)-內存管理
CFNetwork框架詳細解析 —— CFNetwork編程指導之簡介(一)
CFNetwork框架詳細解析—— CFNetwork編程指導之CFNetwork概念(二)
CFNetwork框架詳細解析 —— CFNetwork編程指導之流的處理(三)
CFNetwork框架詳細解析—— CFNetwork編程指導之與HTTP服務器通信(四)
CFNetwork框架詳細解析 —— CFNetwork編程指導之與驗證HTTP服務器通信(五)
CFNetwork框架詳細解析—— CFNetwork編程指導之使用FTP服務器(六)
CFNetwork框架詳細解析 —— CFNetwork編程指導之使用網絡診斷(七)
NSURLRequestCachePolicy 緩存策略講解
利用CocoaHttpServer搭建手機本地服務器
CocoaHTTPServer 和 視頻邊下邊播
iOS中NSURLProtocol黑魔法的使用
WKWebView 不支持 NSURLProtocol 嗎

即時通訊

iOS即時通訊,從入門到“放棄”?
iOS:protocolBuffer + ysocket 實現即時通訊
NSUrlSession
WebSocket介紹和Socket的區別
WebSocket協議:5分鐘從入門到精通
MQTT 協議基本介紹
BSDSocket搭建服務器
MQTT-Client-Framework

服務器

NodJs搭建Web服務器

WebKit

WKWebView詳解??
深入剖析 WebKit(滴滴技術專家戴銘博客)
JavaScriptCore全面解析 (上篇)??
JavaScriptCore全面解析 (下篇)??
深入淺出 JavaScriptCore
深入理解JavaScriptCore
深入剖析 JavaScriptCore(滴滴技術專家戴銘博客)
JSPatch-實現原理詳解??

存儲

iOS - keychain 詳解及變化
iOS Keychain使用說明
Swift保存RSA密鑰到Keychain
SQLite語句以及FMDB基本使用方法

音視頻

AVFoundation編程指南文檔-思維導圖總覽
AVFoundation開發秘籍筆記-01AVFoundation入門
AVFoundation開發秘籍筆記-02播放和錄制音頻
AVFoundation開發秘籍筆記-03資源和元數據
AVFoundation開發秘籍筆記-04視頻播放
AVFoundation開發秘籍筆記-05AVKit用法-AVPlayerViewController
AVFoundation開發秘籍筆記-06捕捉媒體
AVFoundation開發秘籍筆記-07高級捕捉功能之錄制視頻縮放
AVFoundation開發秘籍筆記-07高級捕捉功能之人臉識別
AVFoundation開發秘籍筆記-07高級捕捉功能之機器碼識別(條碼掃描)
AVFoundation開發秘籍筆記-08讀取與寫入媒體
AVFoundation開發秘籍筆記-09媒體的組合和編輯
AVFoundation開發秘籍筆記-010混合音頻初接觸
AVFoundation開發秘籍筆記-11創建視頻過渡效果
AVFoundation開發秘籍筆記-12動畫圖層內容CoreAnimation
AVFoundation視頻處理的時間CMTime
基于AVPlayer實現的視頻播放器
一步一步教你實現iOS音頻頻譜動畫(一)
一步一步教你實現iOS音頻頻譜動畫(二)

直播

菜鳥也能懂的 - 音視頻基礎知識。
【如何快速的開發一個完整的iOS直播app】(原理篇)
【如何快速的開發一個完整的iOS直播app】(播放篇)
【如何快速的開發一個完整的iOS直播app】(采集篇)
【如何快速的開發一個完整的iOS直播app】(美顏篇)
1小時學會:最簡單的iOS直播推流(一)項目介紹
1小時學會:最簡單的iOS直播推流(二)代碼架構概述
1小時學會:最簡單的iOS直播推流(三)使用系統接口捕獲音視頻
1小時學會:最簡單的iOS直播推流(四)如何使用GPUImage,如何美顏
1小時學會:最簡單的iOS直播推流(五)yuv、pcm數據的介紹和獲取
1小時學會:最簡單的iOS直播推流(六)h264、aac、flv介紹
1小時學會:最簡單的iOS直播推流(七)h264/aac 硬編碼
1小時學會:最簡單的iOS直播推流(八)h264/aac 軟編碼
1小時學會:最簡單的iOS直播推流(九)flv 編碼與音視頻時間戳同步
1小時學會:最簡單的iOS直播推流(十)librtmp使用介紹
1小時學會:最簡單的iOS直播推流(十一)sps&pps和AudioSpecificConfig介紹(完結)
開發視頻直播APP需要了解的技術原理和技術細節(只是講了使用哪些技術和SDK)
GPUImage詳細解析
GPUImage詳細解析(二)
GPUImage詳細解析(三)- 實時美顏濾鏡
GPUImage詳細解析(四)模糊圖片處理
GPUImage詳細解析(五)濾鏡視頻錄制
GPUImage詳細解析(六)-用視頻做視頻水印
GPUImage詳細解析(七)文字水印和動態圖像水印
GPUImage詳細解析(八)視頻合并混音
GPUImage詳細解析(十)用GPUImage和指令配合合并視頻
GPUImage詳細解析(十一)美顏+人臉識別
GPUImage詳細解析(十二)Sobel邊界檢測

以上文章全部讀完對直播開發將有全面的了解

內購

1. iOS內購IAP(一) —— 基礎配置篇(一)
2. iOS內購IAP(二) —— 工程實踐(一)
3. iOS內購IAP(三) —— 編程指南之關于內購(一)
4. iOS內購IAP(四) —— 編程指南之設計您的應用程序的產品(一)
5. iOS內購IAP(五) —— 編程指南之檢索產品信息(一)
6. iOS內購IAP(六) —— 編程指南之請求支付(一)
7. iOS內購IAP(七) —— 編程指南之促進應用內購買(一)
8. iOS內購IAP(八) —— 編程指南之提供產品(一)
9. iOS內購IAP(九) —— 編程指南之處理訂閱(一)
10. iOS內購IAP(十) —— 編程指南之恢復購買的產品(一)
11. iOS內購IAP(十一) —— 編程指南之準備App審核(一)
12. iOS內購IAP(十二) —— 一個詳細的內購流程(一)
13. iOS內購IAP(十三) —— 一個詳細的內購流程(二)
14. iOS內購IAP(十四) —— IAP的收據驗證(一)
15. iOS內購IAP(十五) —— IAP的收據驗證(二)

推送通知

iOS開發 iOS10推送必看(基礎篇)
iOS開發 iOS10推送必看(高階1)
iOS10推送必看UNNotificationServiceExtension - 簡書
iOS10推送必看UNNotificationContentExtension

架構

iOS應用架構談 開篇(規范)
iOS應用架構談 view層的組織和調用方案
iOS應用架構談 網絡層設計方案
iOS應用架構談 本地持久化方案及動態部署
iOS應用架構談 組件化方案
私有庫管理和模塊化管理
組件化架構漫談??
iOS設計模式詳解
iOS 架構模式 - 簡述 MVC, MVP, MVVM 和 VIPER (譯)
唯一可行的 iOS 架構
聊聊iOS開發之MVVM的架構設計
iOS開發: 配置CocoaPods遠程私有倉庫

調試

xcode中debug的一些用法(lldb)
深入iOS系統底層之crash解決方法介紹
xcode8 instruments測試工具使用一
Xcode8 Instruments 測試工具使用二
Xcode8 Instruments 測試工具使用三
Xcode8 Instruments 測試工具使用四
Xcode8 Instruments 測試工具使用五
ios 單元測試【單元測試編碼規范】
iOS Crash處理方法(一):利用MethodSwizzle避免Crash
iOS Crash處理方法(二):自己編寫代碼定位Crash
LLDB調試命令

性能優化

iOS 保持界面流暢的技巧??
iOS啟動時間優化
iOS Dynamic Framework 對App啟動時間影響實測
RunLoop應用之性能優化 - 戀~時光 - 博客園
UITableView優化--使用runloop,優化耗時較多的事件 - i..._CSDN博客
iOS視圖渲染以及性能優化總結 - 簡書
NSCache和NSURLCache、網絡緩存優化 - Mike_zh - 博客園
深度優化iOS網絡模塊
IM UI性能優化之異步繪制 - 簡書
FPSLabel
skyming/iOS-Performance-Optimization (一篇對優化文章的全面收集)
如何精確度量 iOS App 的啟動時間 - 簡書
深入剖析 iOS 性能優化(滴滴技術專家戴銘博客)
iOS的幾種定時器及區別
一次立竿見影的啟動時間優化
抖音研發實踐:基于二進制文件重排的解決方案 APP啟動速度提升超15%
System Trace入坑筆記
簡談二進制重排

安全

iOS - 使用FMDB進行數據庫加密 - 簡書
Xcode動態調試原理 - 簡書
iOS-對App進行砸殼 - 簡書
1. APP安全機制(一)—— 幾種和安全性有關的情況
2. APP安全機制(二)—— 使用Reveal查看任意APP的UI
3. APP安全機制(三)—— Base64加密
4. APP安全機制(四)—— MD5加密
5. APP安全機制(五)—— 對稱加密
6. APP安全機制(六)—— 非對稱加密
7. APP安全機制(七)—— SHA加密
8. APP安全機制(八)—— 偏好設置的加密存儲
9. APP安全機制(九)—— 基本iOS安全之鑰匙鏈和哈希(一)
10. APP安全機制(十)—— 基本iOS安全之鑰匙鏈和哈希(二)

第三方框架源碼解析

一行行看SDWebImage源碼(一)
一行行看SDWebImage源碼(二)
SDWebImage4.0源碼探究(一)面試題 - 簡書
SDWebImage源碼閱讀系列(5)
SDWebImage源碼解析(一)——WebCache+Manager模塊
SDWebImage源碼解析(二)——SDImageCache緩存模塊
SDWebImage源碼解析(三)——SDWebImage圖片解碼/壓縮模塊 - 簡書
SDWebImage源碼解析(四)——SDWebImage圖片下載模塊
AFNetworking到底做了什么?
AFNetworking到底做了什么?(二)
AFNetworking到底做了什么?(終)
AFNetworking之于https認證
AFNetworking源碼閱讀系列(6)
FMDB 使用進階 - 簡書
FMDB源碼閱讀系列(3)
fmdb中databasequeue的使用,避免死鎖 - codeTao - 博客園
[iOS 開發] WebViewJavascriptBridge 從原理到實戰 - 簡書
[iOS]JPVideoPlayer 3.0 使用介紹
[iOS]JPVideoPlayer 3.0 源碼解析
[iOS]仿微博視頻邊下邊播之封裝播放器
[iOS]仿微博視頻邊下邊播之滑動TableView自動播放
[iOS]從使用 KVO 監聽 readonly 屬性說起
[iOS]如何重新架構 JPVideoPlayer ?
MJExtension框架源碼分析 - 飛魚灣 - 博客園
優雅的PromiseKit
AsyncDisplayKit的使用
Texture
Alamofire框架的使用一 —— 基本用法

零散知識點

hittest:WithEvent事件傳遞和響應者鏈條
iOS開發 簡化view controller
iOS 實現自動登錄(從低級做法到高級做法)
深入iOS系統底層之程序映像
面試驅動技術 - Block看我就夠了【干貨】
iOS組件化方案對比
深入iOS系統底層之crash解決方法介紹
iOS開發之Notification與多線程
iOS開發 之 不要告訴我你真的懂isEqual與hash!
使用LLDB調試程序
獲取UUID和keychain存儲代碼
Block里面的weak-strong理解 - 簡書
iOS 開發者必會的幾項技能,不知不用你就OUT了
Xcode 10.1新功能及解決的問題
關于iOS學習進階的必讀一些博客總結
UIViewController中各方法調用順序及功能詳解 - 簡書
iOS中的SEl和IMP到底是什么
iOS 程序啟動過程
為什么Swift比OC快? - 簡書
深入理解@autoreleasepool - 簡書
YYKit @autoreleasepool 使用,優化內存
iOS加密方式(RSA簽名、加密、AES)
公鑰與私鑰,HTTPS詳解 - 迪米特 - 博客園
自動埋點
網易HubbleData無埋點SDK在iOS端的設計與實現
iOS類方法load和initialize詳解 - 簡書
NSTimer循環引用解決方案 - 簡書(補充:造成循環引用的原因是runloop持有timer,timer持有target,用timer的block方法也可以防止泄露)
iOS PassKit Wallet 開發
iOS 初中級工程師簡歷指北
非越獄下 iOS代碼注入&HOOK微信登錄
iOS里的動態庫和靜態庫

自動化打包

iOS持續集成—Jenkins(最新最全)
詳解Shell腳本實現iOS自動化編譯打包提交(運行腳本上傳到Fir&AppStore,內容較詳細)
iOS 命令行打包(新手)(打包的命令,內容簡潔)
企業級APP通過網頁實現下載安裝

Swift

SwiftUI
SwiftUI 的 DSL 語法分析

編譯原理

深入理解iOS App的啟動過程
iOS編譯過程的原理和應用
iOS匯編入門
深入iOS系統底層之程序中的匯編代碼
深入淺出iOS編譯

知名學習網站與博客

iOS ExampleCocoa Controls(這兩個網站收集了大量的開源組件和庫,并且進行了非常詳細的分類。)
Open-Source iOS Apps(收錄了很多優秀的,完整的開源iOS App,并做了詳細分類,專門標出了上架了App Store的開源iOS APP)
Awesome iOS(一個值得推薦的網站,里面包含了 iOS 開發的方方面面,而且內容都是經過人工篩選、分類的。)
NSHipster(AFNetworking 和 Alamofire 的作者 Mattt維護的網站,主要關注一些不常用的iOS知識點)
知名開發者
開源項目團隊
iOS 開發輿圖(滴滴工程師博客)

算法

數據結構:圖(Graph)

結語

每篇文章都有自己的重點和不足,由于時間原因有的博客我還沒有看,我會隨著學習補充缺失的內容,刪掉內容較差的博客。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,606評論 6 533
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,582評論 3 418
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,540評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,028評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,801評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,223評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,294評論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,442評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,976評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,800評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,996評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,543評論 5 360
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,233評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,662評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,926評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,702評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,991評論 2 374

推薦閱讀更多精彩內容

  • 綜合類型 綜合類型指的是學習資源,博客,demo地址,個人總結,軟文等 1.iOS學習資源匯總(開源項目、第三方庫...
    守護地中海的花閱讀 524評論 0 1
  • 不知不覺,日更超過了一百篇。 我做完曾經的工作狂,曾經不敢想象不工作的日子如何度過,該怎么打發那些無聊的時間。 寫...
    笨笨的拾光閱讀 228評論 0 1
  • 四月 日照時間開始延長 春夏交接 窗外時有蟬鳴 這時節 想飲春茶 茶葉在沸騰的水中舒展 升騰熱氣 邀三兩友人 相對...
    盧鈉鈉閱讀 306評論 0 0
  • 你以為是婚姻困住了你,不,不是的,是你自己困住了自己,你幫自己困在這個小小的房間里,看別人的臉色過生活,每天早上小...
    尋跡閱讀 284評論 0 0
  • 調查人∶王佳琦 調查地點:滑縣棗村小營村 調查時間:2018年4月6日 調查目的:認識更多的植物物種了解生物多樣性...
    永不言敗_6662閱讀 496評論 0 1