iphone 技術(shù)層結(jié)構(gòu),從上到下:Cocoa Touch,多媒體,核心服務(wù),核心 OS
一.Cocoa Touch層
1.關(guān)鍵技術(shù)
- 多任務(wù)(UIKit)
- 打印(UIKit)
- 數(shù)據(jù)保護(hù):鎖定時(shí)無(wú)法訪(fǎng)問(wèn),解鎖后通過(guò)密鑰訪(fǎng)問(wèn)
- 蘋(píng)果推送
- 本地通知
- 手勢(shì)識(shí)別器
- 文件共享(/Documents目錄)
- 點(diǎn)對(duì)點(diǎn)對(duì)戰(zhàn)(藍(lán)牙)
- 標(biāo)準(zhǔn) VC
- 外部顯示
2.包含框架
// 應(yīng)用程序管理
// 用戶(hù)界面管理
// 圖形和窗口支持
// 多任務(wù)
// 手勢(shì)的處理
// 標(biāo)準(zhǔn) VC
// 對(duì)文本和 WEB 內(nèi)容的支持
// 復(fù)制粘貼的支持
// 動(dòng)畫(huà)
// 通過(guò) URL 和其他程序交互
// 蘋(píng)果推送
// 本地通知
// 定制輸入鍵盤(pán)
// 對(duì)殘障人士的易用性支持
// 對(duì) PDF 的支持
// 對(duì)設(shè)備信息的支持:各種傳感器,攝像頭,照片庫(kù),設(shè)備名和型號(hào),電池狀態(tài),耳機(jī)線(xiàn)控
// 地圖縮放,標(biāo)記地點(diǎn),在地圖上顯示路線(xiàn)
// 點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)通信(Bonjour):語(yǔ)音通話(huà)
- Message UI / Address Book UI / Event Kit UI
// 短信郵件,聯(lián)系人,日歷事件
// 顯示廣告(view),事件響應(yīng)
二.多媒體層
// 處理音頻,視頻 : 電影錄制,音軌管理,音頻平移等
// 處理音頻,包含 ToolBox,AudioUnit
// ToolBox : 播放警報(bào)聲,振動(dòng)
// AudioUnit : 處理聲音
// 處理圖像的高級(jí)功能 : 人臉識(shí)別,圖像過(guò)濾等
// 繪圖的高級(jí)功能
// 處理文本的高級(jí)功能
// 處理圖像的導(dǎo)入導(dǎo)出
// 視頻播放器
// 繪制2D和3D 動(dòng)畫(huà)
// 創(chuàng)建動(dòng)畫(huà)效果
核心服務(wù)層(通過(guò) Foundation 框架使用)
// 管理賬戶(hù)
// 管理通訊錄
// 訪(fǎng)問(wèn) BSD 套接字,HTTP,FTP 協(xié)議請(qǐng)求,以及發(fā)現(xiàn) Bonjour 服務(wù)
// 數(shù)據(jù)模型框架 : 包括序列化,SQLite 數(shù)據(jù)庫(kù)
// Foundation 框架的 C 版本
// 與 View 無(wú)關(guān)的系統(tǒng)層級(jí)的管理功能 : 線(xiàn)程,本地化等
// 日歷相關(guān)功能
// 定位服務(wù)
// 與運(yùn)動(dòng)相關(guān)的功能 : 加速度傳感器,陀螺儀等
// 文件瀏覽
// 應(yīng)用內(nèi)購(gòu)功能
// 處理設(shè)備的配置信息 : 網(wǎng)絡(luò)配置狀態(tài)等
核心 OS 層
// 簡(jiǎn)化計(jì)算任務(wù),包括數(shù)字信號(hào)處理功能
// 針對(duì)配件的接口
// 加密功能
// 訪(fǎng)問(wèn) UNIX 開(kāi)發(fā)環(huán)境的工具
Cocoa 中的核心類(lèi)
// 程序運(yùn)行過(guò)程中會(huì)創(chuàng)建一個(gè) UIApplication 類(lèi)的單例,通過(guò)[UIApplication sharedApplication]獲取單例
// 主要工作是負(fù)責(zé)處理 event : 將事件放入 event queue 逐個(gè)處理.處理時(shí)把事件發(fā)送給 key window
// 同時(shí)維護(hù)一個(gè) UIWindow 對(duì)象列表,可以訪(fǎng)問(wèn)任何 UIView 對(duì)象
// 有一個(gè) AppDelegate,負(fù)責(zé)處理生命周期事件,系統(tǒng)事件(來(lái)電等)
// 放置視圖的容器
// 負(fù)責(zé) : 顯示視圖,將事件發(fā)給視圖
// 應(yīng)用通常只有一個(gè)窗口,但是電影播放器等會(huì)新增一個(gè)窗口
// 可以響應(yīng) event 的對(duì)象,UIView 的父類(lèi)
// key window 派發(fā) enent 時(shí),可能有多個(gè) view 響應(yīng)這個(gè) event,事件將沿著響應(yīng)鏈(視圖層級(jí))向上傳遞,能處理這個(gè) event 的 view 成為 first responder.例如給文本框輸入文字時(shí),文本框是 first responder,退出編輯后,文本框應(yīng)取消 first responder 狀態(tài)
// 定義一塊矩形區(qū)域,并管理區(qū)域的屏幕顯示
// 可以使用嵌套的形式形成層次結(jié)構(gòu):父視圖包含子視圖
// UIview 的子類(lèi),是幾乎所有原生界面控件(UIButton,UISwitch,UITextField 等)的父類(lèi)
// 不能直接使用,只定義了子類(lèi)需要實(shí)現(xiàn)的方法
// UILable : 標(biāo)簽(顯示靜態(tài)文本,不可編輯)
// UITextField : 單行文本框(可編輯).常用屬性 : text,placeholder
// UITextView : 多行文本框(可編輯),繼承自 UIScrollView,可自動(dòng)添加滑動(dòng)條.由于輸入文本可以包括換行符,所以關(guān)閉鍵盤(pán)需要專(zhuān)門(mén)的事件.常用屬性 : text,editable
// UIButton : 按鈕
// UISwitch : 開(kāi)關(guān)
// UISegmentControl : 分段控件(長(zhǎng)條)
// UISlider : 滑塊(調(diào)節(jié)音量,亮度等)
// UIStepper : 步進(jìn)控件(類(lèi)似 UISlider,區(qū)別在于不能隨意調(diào)節(jié)數(shù)字,只能按段來(lái))
// UIPicker : 選擇器,常用子類(lèi) : UIDatePicker
// UIPopoverController : 彈出框(ipad 特有)
// UIColor : 顏色
// 常用方法:
// [UIColor colorWithRed:(CGFloat) green:(CGFloat) blue:(CGFloat) alpha:(CGFloat)],數(shù)值都是從0.0~1.0,透明度0.0為完全透明
// [UIColor colorWithCGColor:(nonnull CGColorRef)],通過(guò) CGColor 實(shí)例獲得 UIcolor 實(shí)例
// @property(nonatomic,readonly) CGColorRef CGColor; 通過(guò) UIColor 實(shí)例獲得 CGColor 實(shí)例,常用于 Quartz 繪圖
// UITableView : 列表,包含 Section(段落) 和 Cell(行)
// 原生控件(UIButton 等) -> UIControl (不可使用) -> UIView -> UIResponder (不可使用)
- event 的產(chǎn)生及處理過(guò)程
// event 流向 : 系統(tǒng)框架 -> UIApplication 單例 -> key window -> view
// 1.系統(tǒng)框架將因用戶(hù)行為產(chǎn)生的數(shù)據(jù)(觸摸屏,傳感器,陀螺儀等)封裝成 event
// 2.將 event 發(fā)給 UIApplication 單例,UIApplication 單例將 event 放入 event queue 逐個(gè)處理
// 3.處理時(shí)將 event 發(fā)送給應(yīng)用的 key window,由 key window 派發(fā)給響應(yīng)鏈(responder chain)最下層的 view
// 4.如果這個(gè) view 不能處理事件,就沿著響應(yīng)鏈向上層 view 傳遞,直到找到能處理事件的對(duì)象(first responder)
// 響應(yīng)鏈最下層是視圖層級(jí)最上層:最靠近屏幕的層,沒(méi)有子 view