- ?iOS 的體系架構(gòu)
? ? ? ?1. cocoaTouch
? ? ? ?2. ?Media
? ? ? ?3. Core ?Services 核心服務(wù)層
? ? ? ?4. core OS 核心操作系統(tǒng)層
- cocoa Touch ?
? ? ? ? - 其中有UIKit 框架 精通CocaTouch 就是精通CocaTouch
? ? ? ? - 包含了簡建立應(yīng)用程序的主要框架
? ? ? ? - 定義APP的外觀和基礎(chǔ)組件
? ? ? ? - 多任務(wù) 手勢輸入 推送通知等高級系統(tǒng)服務(wù)?
? ? ? ? ?- 設(shè)計APP 優(yōu)先考慮這一層級 (由高到低)
- medie 層
? ? ? ? - 音頻視頻
? ? ? ? ?- 提供試聽
- Core services Layer
? ? ? ? ?- app所取得基礎(chǔ)系統(tǒng)服務(wù)
? ? ? ? ?- core Foundation 和 Foundation框架 提供了基本類型(NSString. NSArray.NADictionNary)
? ? ? ? ?- 定位 icloud 媒體社交 網(wǎng)絡(luò) 等功能?
? ? ? ? ?- 最底層的數(shù)據(jù)搭建
- Core OS?
? ? ? ? ?- 有藍牙
Runloop?
- 有一個死循環(huán),這個線程不能死亡?
- 一直等待用戶交互
- 負責(zé)所有的事件監(jiān)聽
- 主線程的RunLoop在程序一運行就會開啟
- 不能自己創(chuàng)建RunLoop ,一個線程只有一個Runloop 只能Get
- runLoop的線程是不安全的,不要在其他線程上調(diào)用當(dāng)前線程的Runloop
- 管理 AutoReleasePool
- 消息事件,即: 輸入源事件 ?計時器事件 ?網(wǎng)絡(luò)請求事件
? ? ? ? ? ? ?- 計時器?
? ? ? ? ? ? ? ? ? ? NSTimer ?+ CADisplaylink?
? ? ? ? ? ? ? ? ? ? 定時不使用的時候一定要銷毀,平時只用這一點使用Runloop,所有監(jiān)聽的方法都被蘋果封裝完了.
* runLoop的應(yīng)用場景?
? ? ? ? ? - NSUrlConnection 這個古老的框架,用到了Runloop,AFN2.0封裝的時候用到了
?? ? ? ? ?- socket 開發(fā),使用Runloop能監(jiān)聽網(wǎng)絡(luò)端口的接接受和發(fā)送;
? ? ? ? ? - socket 通常使用在智能家居/游戲機;
? ? ? ? ?- 自動釋放池的釋放和創(chuàng)建與runloop有關(guān)
*Runloop兩個模式:
? ? ? ? ?- defaultMode ?等待用戶交互
? ? ? ? ?- trackingMode 可以負責(zé)滾動
? ? ? ? ? - common modes 包含以上兩個 (時鐘的運用)