序言
最近正在重新系統(tǒng)的學習iOS伶棒,收集了一些自己認為不錯的博客和資料和大家分享。有??標記的是我看過覺得詳細易懂的文章间聊。
底層
isa和Class??--參考:(What is a meta-class in Objective-C?韩脑、[譯]Objective-C中的meta-class是什么谆奥、iOS 程序 main 函數(shù)之前發(fā)生了什么、從 NSObject 的初始化了解 isa菇肃、深入解析 ObjC 中方法的結構地粪、刨根問底 Objective-C Runtime(1)- Self & Super)
消息發(fā)送與轉發(fā)??--參考:(Objective-C 消息發(fā)送與轉發(fā)機制原理、Hmmm, What’s that Selector?琐谤、dyld: Dynamic Linking On OS X*)
如何正確使用runtime??
深入理解Objective-C:Category??--參考:(《Objective-C +load vs +initialize》驶忌、iOS動態(tài)性(二)可復用而且高度解耦的用戶統(tǒng)計埋點實現(xiàn)、KVO中的缺陷)
深入研究 Block 捕獲外部變量和 __block 實現(xiàn)原理??--參考:(A look inside blocks: Episode 3 (Block_copy))
深入研究 Block 用 weakSelf笑跛、strongSelf付魔、@weakify、@strongify 解決循環(huán)引用--參考:(關于ARC詳細的文檔)
iOS 如何實現(xiàn) Aspect Oriented Programming
iOS底層原理總結 - 探尋OC對象的本質
iOS底層原理總結 - 探尋Class的本質
iOS底層原理總結 - 探尋KVO本質
KVC原理剖析
KVC解析(一) —— 基本了解
KVC解析(二) —— 不可不知的賦值深層次原理
KVC解析(三) —— 不可不知的取值深層次原理
KVC解析(四) —— keyPath的深度解析
KVC解析(五) —— KVC幾種典型的異常處理
KVC解析(六) —— KVC容器類及深層次原理
KVC解析(七) —— KVC正確性的驗證
AutoreleasePool底層實現(xiàn)原理 - 簡書
OS底層原理總結 - RunLoop
RunLoop入門 看我就夠了
RunLoop已入門飞蹂?不來應用一下几苍?
深入理解RunLoop - 簡書
深入理解RunLoop??
iOS開發(fā)-RunLoop的退出方式 - 簡書
iOS引用計數(shù)管理之揭秘計數(shù)存儲
iOS開發(fā)之weak底層實現(xiàn)原理
Objective-C runtime機制(6)——weak引用的底層實現(xiàn)原理
iOS總結-NSArray的底層實現(xiàn) - qq_28551705的博客 - CSDN博客
關于NSArray的二三事 - 簡書
如何自己動手實現(xiàn) KVO
NSString的內存管理之 __NSCFConstantString、NSTaggedPointerString陈哑、__NSCFString
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中的數(shù)據(jù)管理
Quartz 2D編程指南(十三)—— 位圖圖像和圖像蒙版(一)
Quartz 2D編程指南(十四)—— 位圖圖像和圖像蒙版(二)
Quartz 2D編程指南(十五)——Core Graphics圖層繪制
Quartz 2D編程指南(十六)——PDF文檔創(chuàng)建妻坝,查看和轉換
Quartz 2D編程指南(十七)—— PDF文件解析
Quartz 2D編程指南(十八)——PostScript轉換
以上文章全部讀完對Quartz 2D會有一個全面的了解
CoreText入門(一)-文本繪制
CoreText入門(二)-繪制圖片
CoreText進階(三)-事件處理
CoreText進階(四)-文字行數(shù)限制和顯示更多
CoreText進階(五)- 文字排版樣式和效果
CoreText進階(六)-內容大小計算和自動布局
CoreText進階(七)-添加自定義View和對其
ImageI/O
iOS中ImageIO框架詳解與應用分析
iOS 圖片壓縮限制大小最優(yōu)解
位圖的結構
多線程
iOS Swift GCD 開發(fā)教程
深入淺出GCD??
iOS 多線程:『GCD』詳盡總結
iOS Swift GCD 開發(fā)教程
深入淺出GCD(滴滴工程師博客)
iOS多線程-各種線程鎖的簡單介紹 - 簡書
線程死鎖
NSOperation的進階使用和簡單探討
網絡
原理
一篇文章帶你詳解 HTTP 協(xié)議(網絡協(xié)議篇一)
一篇文章帶你熟悉 TCP/IP 協(xié)議(網絡協(xié)議篇二)
HTTPS詳解??
iOS安全系列之一:HTTPS
淺析HTTPS中間人攻擊與證書校驗
SSL三種類型證書有什么區(qū)別
為什么Tcp連接的創(chuàng)立需要三次握手 ,而斷開需要四次揮手_CSDN博客
iOS中長連接的那些事
基礎
NSURLSession系列(一) - NSURLConfiguration
NSURLSession系列(二)- 創(chuàng)建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 實現(xiàn)即時通訊
NSUrlSession
WebSocket介紹和Socket的區(qū)別
WebSocket協(xié)議:5分鐘從入門到精通
MQTT 協(xié)議基本介紹
BSDSocket搭建服務器
MQTT-Client-Framework
服務器
WebKit
WKWebView詳解??
深入剖析 WebKit(滴滴技術專家戴銘博客)
JavaScriptCore全面解析 (上篇)??
JavaScriptCore全面解析 (下篇)??
深入淺出 JavaScriptCore
深入理解JavaScriptCore
深入剖析 JavaScriptCore(滴滴技術專家戴銘博客)
JSPatch-實現(xiàn)原理詳解??
存儲
iOS - keychain 詳解及變化
iOS Keychain使用說明
Swift保存RSA密鑰到Keychain
SQLite語句以及FMDB基本使用方法
音視頻
AVFoundation編程指南文檔-思維導圖總覽
AVFoundation開發(fā)秘籍筆記-01AVFoundation入門
AVFoundation開發(fā)秘籍筆記-02播放和錄制音頻
AVFoundation開發(fā)秘籍筆記-03資源和元數(shù)據(jù)
AVFoundation開發(fā)秘籍筆記-04視頻播放
AVFoundation開發(fā)秘籍筆記-05AVKit用法-AVPlayerViewController
AVFoundation開發(fā)秘籍筆記-06捕捉媒體
AVFoundation開發(fā)秘籍筆記-07高級捕捉功能之錄制視頻縮放
AVFoundation開發(fā)秘籍筆記-07高級捕捉功能之人臉識別
AVFoundation開發(fā)秘籍筆記-07高級捕捉功能之機器碼識別(條碼掃描)
AVFoundation開發(fā)秘籍筆記-08讀取與寫入媒體
AVFoundation開發(fā)秘籍筆記-09媒體的組合和編輯
AVFoundation開發(fā)秘籍筆記-010混合音頻初接觸
AVFoundation開發(fā)秘籍筆記-11創(chuàng)建視頻過渡效果
AVFoundation開發(fā)秘籍筆記-12動畫圖層內容CoreAnimation
AVFoundation視頻處理的時間CMTime
基于AVPlayer實現(xiàn)的視頻播放器
一步一步教你實現(xiàn)iOS音頻頻譜動畫(一)
一步一步教你實現(xiàn)iOS音頻頻譜動畫(二)
直播
菜鳥也能懂的 - 音視頻基礎知識刽宪。
【如何快速的開發(fā)一個完整的iOS直播app】(原理篇)
【如何快速的開發(fā)一個完整的iOS直播app】(播放篇)
【如何快速的開發(fā)一個完整的iOS直播app】(采集篇)
【如何快速的開發(fā)一個完整的iOS直播app】(美顏篇)
1小時學會:最簡單的iOS直播推流(一)項目介紹
1小時學會:最簡單的iOS直播推流(二)代碼架構概述
1小時學會:最簡單的iOS直播推流(三)使用系統(tǒng)接口捕獲音視頻
1小時學會:最簡單的iOS直播推流(四)如何使用GPUImage,如何美顏
1小時學會:最簡單的iOS直播推流(五)yuv界酒、pcm數(shù)據(jù)的介紹和獲取
1小時學會:最簡單的iOS直播推流(六)h264圣拄、aac、flv介紹
1小時學會:最簡單的iOS直播推流(七)h264/aac 硬編碼
1小時學會:最簡單的iOS直播推流(八)h264/aac 軟編碼
1小時學會:最簡單的iOS直播推流(九)flv 編碼與音視頻時間戳同步
1小時學會:最簡單的iOS直播推流(十)librtmp使用介紹
1小時學會:最簡單的iOS直播推流(十一)sps&pps和AudioSpecificConfig介紹(完結)
開發(fā)視頻直播APP需要了解的技術原理和技術細節(jié)(只是講了使用哪些技術和SDK)
GPUImage詳細解析
GPUImage詳細解析(二)
GPUImage詳細解析(三)- 實時美顏濾鏡
GPUImage詳細解析(四)模糊圖片處理
GPUImage詳細解析(五)濾鏡視頻錄制
GPUImage詳細解析(六)-用視頻做視頻水印
GPUImage詳細解析(七)文字水印和動態(tài)圖像水印
GPUImage詳細解析(八)視頻合并混音
GPUImage詳細解析(十)用GPUImage和指令配合合并視頻
GPUImage詳細解析(十一)美顏+人臉識別
GPUImage詳細解析(十二)Sobel邊界檢測
以上文章全部讀完對直播開發(fā)將有全面的了解
內購
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的收據(jù)驗證(一)
15. iOS內購IAP(十五) —— IAP的收據(jù)驗證(二)
推送通知
iOS開發(fā) iOS10推送必看(基礎篇)
iOS開發(fā) iOS10推送必看(高階1)
iOS10推送必看UNNotificationServiceExtension - 簡書
iOS10推送必看UNNotificationContentExtension
架構
iOS應用架構談 開篇(規(guī)范)
iOS應用架構談 view層的組織和調用方案
iOS應用架構談 網絡層設計方案
iOS應用架構談 本地持久化方案及動態(tài)部署
iOS應用架構談 組件化方案
私有庫管理和模塊化管理
組件化架構漫談??
iOS設計模式詳解
iOS 架構模式 - 簡述 MVC, MVP, MVVM 和 VIPER (譯)
唯一可行的 iOS 架構
聊聊iOS開發(fā)之MVVM的架構設計
iOS開發(fā): 配置CocoaPods遠程私有倉庫
調試
xcode中debug的一些用法(lldb)
深入iOS系統(tǒng)底層之crash解決方法介紹
xcode8 instruments測試工具使用一
Xcode8 Instruments 測試工具使用二
Xcode8 Instruments 測試工具使用三
Xcode8 Instruments 測試工具使用四
Xcode8 Instruments 測試工具使用五
ios 單元測試【單元測試編碼規(guī)范】
iOS Crash處理方法(一):利用MethodSwizzle避免Crash
iOS Crash處理方法(二):自己編寫代碼定位Crash
LLDB調試命令
性能優(yōu)化
iOS 保持界面流暢的技巧??
iOS啟動時間優(yōu)化
iOS Dynamic Framework 對App啟動時間影響實測
RunLoop應用之性能優(yōu)化 - 戀~時光 - 博客園
UITableView優(yōu)化--使用runloop,優(yōu)化耗時較多的事件 - i..._CSDN博客
iOS視圖渲染以及性能優(yōu)化總結 - 簡書
NSCache和NSURLCache毁欣、網絡緩存優(yōu)化 - Mike_zh - 博客園
深度優(yōu)化iOS網絡模塊
IM UI性能優(yōu)化之異步繪制 - 簡書
FPSLabel
skyming/iOS-Performance-Optimization (一篇對優(yōu)化文章的全面收集)
如何精確度量 iOS App 的啟動時間 - 簡書
深入剖析 iOS 性能優(yōu)化(滴滴技術專家戴銘博客)
iOS的幾種定時器及區(qū)別
一次立竿見影的啟動時間優(yōu)化
抖音研發(fā)實踐:基于二進制文件重排的解決方案 APP啟動速度提升超15%
System Trace入坑筆記
簡談二進制重排
安全
iOS - 使用FMDB進行數(shù)據(jù)庫加密 - 簡書
Xcode動態(tài)調試原理 - 簡書
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 開發(fā)] WebViewJavascriptBridge 從原理到實戰(zhàn) - 簡書
[iOS]JPVideoPlayer 3.0 使用介紹
[iOS]JPVideoPlayer 3.0 源碼解析
[iOS]仿微博視頻邊下邊播之封裝播放器
[iOS]仿微博視頻邊下邊播之滑動TableView自動播放
[iOS]從使用 KVO 監(jiān)聽 readonly 屬性說起
[iOS]如何重新架構 JPVideoPlayer ?
MJExtension框架源碼分析 - 飛魚灣 - 博客園
優(yōu)雅的PromiseKit
AsyncDisplayKit的使用
Texture
Alamofire框架的使用一 —— 基本用法
零散知識點
hittest:WithEvent事件傳遞和響應者鏈條
iOS開發(fā) 簡化view controller
iOS 實現(xiàn)自動登錄(從低級做法到高級做法)
深入iOS系統(tǒng)底層之程序映像
面試驅動技術 - Block看我就夠了【干貨】
iOS組件化方案對比
深入iOS系統(tǒng)底層之crash解決方法介紹
iOS開發(fā)之Notification與多線程
iOS開發(fā) 之 不要告訴我你真的懂isEqual與hash!
使用LLDB調試程序
獲取UUID和keychain存儲代碼
Block里面的weak-strong理解 - 簡書
iOS 開發(fā)者必會的幾項技能饭耳,不知不用你就OUT了
Xcode 10.1新功能及解決的問題
關于iOS學習進階的必讀一些博客總結
UIViewController中各方法調用順序及功能詳解 - 簡書
iOS中的SEl和IMP到底是什么
iOS 程序啟動過程
為什么Swift比OC快? - 簡書
深入理解@autoreleasepool - 簡書
YYKit @autoreleasepool 使用串述,優(yōu)化內存
iOS加密方式(RSA簽名、加密寞肖、AES)
公鑰與私鑰,HTTPS詳解 - 迪米特 - 博客園
自動埋點
網易HubbleData無埋點SDK在iOS端的設計與實現(xiàn)
iOS類方法load和initialize詳解 - 簡書
NSTimer循環(huán)引用解決方案 - 簡書(補充:造成循環(huán)引用的原因是runloop持有timer,timer持有target纲酗,用timer的block方法也可以防止泄露)
iOS PassKit Wallet 開發(fā)
iOS 初中級工程師簡歷指北
非越獄下 iOS代碼注入&HOOK微信登錄
iOS里的動態(tài)庫和靜態(tài)庫
自動化打包
iOS持續(xù)集成—Jenkins(最新最全)
詳解Shell腳本實現(xiàn)iOS自動化編譯打包提交(運行腳本上傳到Fir&AppStore,內容較詳細)
iOS 命令行打包(新手)(打包的命令,內容簡潔)
企業(yè)級APP通過網頁實現(xiàn)下載安裝
Swift
編譯原理
深入理解iOS App的啟動過程
iOS編譯過程的原理和應用
iOS匯編入門
深入iOS系統(tǒng)底層之程序中的匯編代碼
深入淺出iOS編譯
知名學習網站與博客
iOS ExampleCocoa Controls(這兩個網站收集了大量的開源組件和庫新蟆,并且進行了非常詳細的分類觅赊。)
Open-Source iOS Apps(收錄了很多優(yōu)秀的,完整的開源iOS App栅葡,并做了詳細分類茉兰,專門標出了上架了App Store的開源iOS APP)
Awesome iOS(一個值得推薦的網站尤泽,里面包含了 iOS 開發(fā)的方方面面欣簇,而且內容都是經過人工篩選、分類的坯约。)
NSHipster(AFNetworking 和 Alamofire 的作者 Mattt維護的網站,主要關注一些不常用的iOS知識點)
知名開發(fā)者
開源項目團隊
iOS 開發(fā)輿圖(滴滴工程師博客)
算法
結語
每篇文章都有自己的重點和不足熊咽,由于時間原因有的博客我還沒有看,我會隨著學習補充缺失的內容闹丐,刪掉內容較差的博客横殴。