很久之前就想寫點什么東西,感覺總是很浮燥不夠成熟,從今起為了走向自建靜態(tài)庫(.a 或者第三方framework,雖然這里的framework跟系統(tǒng)真正動態(tài)庫長相一樣,但仍然是靜態(tài)庫)開發(fā),開始可以提供他人實用的框架,為此重溫下知識 虎囚。
Core OS: 底層處理框产,提供上層支撐(其中包括內(nèi)核環(huán)境襟士、驅(qū)動及操作系統(tǒng)底層UNIX 接口)。
?由FreeBSD和Mach所改寫的Darwin, 是開源、符合POSIX標(biāo)準(zhǔn)的一個Unix核心砰琢。這一層包含或者說是提供了整個iPhone OS的一些基礎(chǔ)功能迈勋,比如:硬件驅(qū)動, 內(nèi)存管理勉耀,程序管理,線程管理(POSIX)粗蔚,文件系統(tǒng)尝偎,網(wǎng)絡(luò)(BSD Socket),以及標(biāo)準(zhǔn)輸入輸出等等,所有這些功能都會通過C語言的API來提供鹏控。
iPhone OS提供了許多訪問操作系統(tǒng)底層功能的接口集,并通過LibSystem庫萊訪問這些功能冬念。如:線程、網(wǎng)絡(luò)(sockets)牧挣、文件系統(tǒng)訪問急前、標(biāo)準(zhǔn)I/O、Bonjour和DNS服務(wù)瀑构、內(nèi)存分配裆针、數(shù)學(xué)計算刨摩、區(qū)域信息。
介紹下POSIX世吨、FreeBSD通往開發(fā)跨平臺應(yīng)用,有必要需要了解點背景:
POSIX表示可移植操作系統(tǒng)接口(Portable Operating System Interface 澡刹,縮寫為 POSIX ),POSIX標(biāo)準(zhǔn)定義了操作系統(tǒng)應(yīng)該為應(yīng)用程序提供的接口標(biāo)準(zhǔn)耘婚,是IEEE為要在各種UNIX操作系統(tǒng)上運行的軟件而定義的一系列API標(biāo)準(zhǔn)的總稱罢浇,其正式稱呼為IEEE 1003,而國際標(biāo)準(zhǔn)名稱為ISO/IEC 9945沐祷。
POSIX標(biāo)準(zhǔn)意在期望獲得源代碼級別的軟件可移植性嚷闭。換句話說,為一個POSIX兼容的操作系統(tǒng)編寫的程序赖临,應(yīng)該可以在任何其它的POSIX操作系統(tǒng)(即使是來自另一個廠商)上編譯執(zhí)行胞锰。
FreeBSD是一種類UNIX操作系統(tǒng),是由經(jīng)過BSD兢榨、386BSD和4.4BSD發(fā)展而來的Unix的一個重要分支嗅榕。FreeBSD 為不同架構(gòu)的計算機(jī)系統(tǒng)提供了不同程度的支持。并且一些原來BSD UNIX的開發(fā)者后來轉(zhuǎn)到FreeBSD的開發(fā)吵聪,使得FreeBSD在內(nèi)部結(jié)構(gòu)和系統(tǒng)API上和UNIX有很大的兼容性凌那。由于FreeBSD寬松的法律條款,其代碼被好多其他系統(tǒng)借鑒包括蘋果公司的MacOS X吟逝,正因此由于MacOS X的UNIX兼容性案怯,使得Mac OS X獲得了UNIX商標(biāo)認(rèn)證。
Accessory.framework 澎办、External Accessory.framework 嘲碱、Security.framework
Core Services:該層提供了大量功能,比如Foundation.framework和CoreFoundation.framework.
Foundation類層次的根是NSObject類局蚀,它(和NSObject及NSCopying協(xié)議一起)定義了基本的對象屬性和行為麦锯。
經(jīng)常涉及運用的系統(tǒng)庫,以及簡單介紹:
AddressBook.framework
?? 支持編程訪問存儲于用戶設(shè)備中的聯(lián)系人信息琅绅。如果應(yīng)用程序使用到聯(lián)系人信息扶欣,則可通過該框架訪問并修改用戶聯(lián)系人數(shù)據(jù)庫的記錄。
CFNetwork.framework
提供一組高性能基于C語言的接口千扶,它們?yōu)槭褂镁W(wǎng)絡(luò)協(xié)議提供面向?qū)ο蟪橄蟆?/p>
1.對協(xié)議棧進(jìn)行更精細(xì)的控制料祠,而且可以使用諸如 BSD socket這類底層結(jié)構(gòu)。
2.簡化FTP澎羞、HTTP服務(wù)器通訊髓绽、DNS主機(jī)解析任務(wù)
應(yīng)用場景包括
1.使用SSL或TLS創(chuàng)建加密連接
2.使用BSD sockets
3.解析DNS主機(jī)
4.使用HTTP,校驗HTTP以及HTTPS服務(wù)器妆绞。
5.使用FTP服務(wù)器
6.發(fā)布顺呕、解析并瀏覽 Bonjour服務(wù)枫攀。
Core Data.framework
Core Data框架是一種管理模型-視圖-控制器應(yīng)用程序數(shù)據(jù)模型的技術(shù),它適用于數(shù)據(jù)模型已經(jīng)高度結(jié)構(gòu)化的應(yīng)用程序株茶。通過此框架来涨,您再也不需要通過編程定義數(shù)據(jù)結(jié)構(gòu),而是通過Xcode提供的圖形工具構(gòu)造一份代表數(shù)據(jù)模型的圖表启盛。
CoreFoundation.framework
? ?是一組C語言接口蹦掐,它們?yōu)閕OS應(yīng)用程序提供基本數(shù)據(jù)管理和服務(wù)功能。
Foundation.framework
Foundation框架提供Objective-C接口僵闯。如果您將Foundation對象和Core Foundation類型摻雜使用卧抗,則可利用兩個框架之間的 “toll-free bridging”。所謂的Toll-free bridging是說您可以在某個框架的方法或函數(shù)同時使用Core Foundatio和Foundation 框架中的某些類型棍厂。很多數(shù)據(jù)類型支持這一特性颗味,其中包括群體和字符串?dāng)?shù)據(jù)類型超陆。每個框架的類和類型描述都會對某個對象是否為 toll-free bridged牺弹,應(yīng)和什么對象橋接進(jìn)行說明。
Core Location.framework
可用于定位某個設(shè)備當(dāng)前經(jīng)緯度时呀。它可以利用設(shè)備具備的硬件张漂,通過附近的GPS、蜂窩基站或者WiFi信號等信息計算用戶方位谨娜。Maps應(yīng)用程序就是利用此功能在地圖上顯示用戶當(dāng)前位置航攒。您可以將此技術(shù)結(jié)合到應(yīng)用程序,以此向用戶提供方位信息趴梢。
Core Telephony.framework
此框架為訪問具有蜂窩無線的設(shè)備上的電話信息提供接口漠畜,應(yīng)用程序可通過它獲取用戶蜂窩無線服務(wù)的提供商信息。如果應(yīng)用程序?qū)τ陔娫捄艚懈信d趣坞靶,也可以在相應(yīng)事件發(fā)生時得到通知
Event kit.framework
此框架為訪問用戶設(shè)備的日歷事件提供接口憔狞。您可以通過該框架訪問用戶日歷中現(xiàn)有事件,可以增加新事件彰阴。日歷事件可包含鬧鈴瘾敢,而且可以配置鬧鈴激活規(guī)則。目前沒有定制化視圖擴(kuò)展功能尿这,以往項目只能自己實現(xiàn)類型功能簇抵。
SystemConfiguration.framwork
可用于確定設(shè)備的網(wǎng)絡(luò)配置。您可以使用該框架判斷Wi-Fi或者蜂窩連接是否正在使用中射众,也可以用于判斷某個主機(jī)服務(wù)是否可以使用碟摆。
Mobile Core Services.framework
此框架定義統(tǒng)一類型標(biāo)識符 (UTIs)使用的底層類型。
QuickLook.framework
應(yīng)用程序可以用過該框架預(yù)覽無法直接支持查看的文件內(nèi)容叨橱。如果應(yīng)用程序從網(wǎng)絡(luò)下載文件或者需處理來源未知的文件焦履,則非常適合使用此框架拓劝。因為應(yīng)用程序只要在獲得文件后,調(diào)用框架提供的視圖控制器就可以直接在界面中顯示文件的內(nèi)容嘉裤。
StoreKit.framework
此框架為iOS應(yīng)用程序內(nèi)購買內(nèi)容或服務(wù)提供支持郑临。Store Kit 框架會處于交易過程中和財務(wù)相關(guān)的事件,包括處理用戶通過 iTunes Store賬號發(fā)出的支付請求并且向應(yīng)用程序提供交易相關(guān)信息屑宠。
Media 媒體層 上層處理與媒體相關(guān)諸如:處理圖片厢洞、視頻、音頻等相關(guān)操作典奉。
AssetsLibrary.framework
框架提供一個查詢界面躺翻,您可以通過它查找用戶照片和數(shù)據(jù)。通過使用該框架卫玖,您可以訪問Photos管理的資產(chǎn)公你,包括用戶保存的相冊以及導(dǎo)入到設(shè)備中的圖片或視頻。而且您也可以將照片或者視頻保存到用戶的相冊
AVFoundation.framework
該框架包含的Objective-C 類可用于播放音頻內(nèi)容假瞬。通過使用該框架陕靠,您可以播放聲音文件或播放內(nèi)存中的音頻數(shù)據(jù),也可以同時播放多個聲音脱茉,并對各個聲音的播放特定進(jìn)行控制
Core Audio
Core Graphic.framework?
包含Quartz 2D繪圖API接口 剪芥。Quartz 是Mac OS X系統(tǒng)使用的向量繪圖引擎,它支持基于路徑繪圖琴许、抗鋸齒渲染税肪、漸變、圖片榜田、顏色益兄、坐標(biāo)空間轉(zhuǎn)換、PDF文件的創(chuàng)建箭券、顯示和解析净捅。雖然API基于C語言,但是它使用基于對象的抽象以表示基本繪圖對象邦鲫。
Core Video.framework
該框架為Core Media提供緩存和緩存池的支持灸叼。大多數(shù)應(yīng)用程序都不應(yīng)該直接使用該框架
ImageIO.framework
該框架的接口可用于導(dǎo)入或?qū)С鰣D像數(shù)據(jù)及圖像元數(shù)據(jù)。該框架建構(gòu)于 Core Graphics數(shù)據(jù)類型和函數(shù)之上庆捺,能夠支持iOS 上所有的標(biāo)準(zhǔn)圖像類型古今。
MediaPlayer.framework
為應(yīng)用程序播放視頻和音頻內(nèi)容提供高級支持。通過該框架滔以,您就可以使用標(biāo)準(zhǔn)系統(tǒng)界面播放視頻捉腥。 iOS 3.0增加了對訪問用戶iTune庫的支持。因此你画,您可以利用該框架播放音樂曲目抵碟、播放列表桃漾、搜索歌曲并向用戶顯示媒體選取界面。
OpenAL.framework
OpenAL接口是在應(yīng)用程序中發(fā)布方位音頻的跨平臺標(biāo)準(zhǔn)拟逮。通過使用該框架撬统,您可以在游戲或者要求有方位音頻輸出的程序中實現(xiàn)高性能、高質(zhì)量的音頻敦迄。OpenAL是跨平臺的標(biāo)準(zhǔn)恋追,iOS平臺使用OpenAL編寫的代碼模塊可以移植到許多其他的平臺運行。
OpenGLES.framwork
提供的工具可用于繪制2D及3D內(nèi)容罚屋。該框架基于C語言苦囱,能夠和設(shè)備硬件緊密協(xié)作,為全屏游戲類型的應(yīng)用程序提供很高的幀速率脾猛。
QuartzCore.framework
包含Core Animation接口撕彤。Core Animation是高級動畫制作和混合技術(shù),它使用經(jīng)過優(yōu)化的渲染路徑實現(xiàn)復(fù)雜的動畫和視覺效果猛拴。它提供的高級Objective-C接口可對動畫效果進(jìn)行配置羹铅,然后在設(shè)備硬件中進(jìn)行渲染,以此來提高程序的性能漆弄。Core Animation框架被整合到iOS的許多部分(包括UIKit框架中的許多類(如UIView))睦裳,可以為多種系統(tǒng)行為提供動畫效果造锅。您也可以使用該框架中的Objective-C接口直接創(chuàng)建定制動畫
Metal.framework ?iOS8.0以后 A7 CPU架構(gòu) ?相當(dāng)強大的處理引擎撼唾,相信會逐步取代OpenGLES。
metal技術(shù)正是可以讓我們在移動端體驗主機(jī)端畫質(zhì)的引擎哥蔚。
Cocoa Touch?
包含創(chuàng)建 iOS應(yīng)用程序所需的關(guān)鍵框架倒谷。上至實現(xiàn)應(yīng)用程序可視界面,下至與高級系統(tǒng)服務(wù)交互糙箍,都需要該層技術(shù)提供底層基礎(chǔ)渤愁。在開發(fā)應(yīng)用程序的時候,請盡可能不要使用更底層的框架深夯,盡可能使用該層的框架抖格。
AddressBookUI.framework
EventKitUI.framework
iAd.framework
GameKit.framework
MapKit.framework
MessageUI.framework
UIKit.framework ? 重點介紹下UIKit.framwork,雖然無時無刻不在使用它:
UIKit.framework Objective-C編程接口為實現(xiàn)iOS應(yīng)用程序的圖形及事件驅(qū)動提供關(guān)鍵基礎(chǔ)。iOS系統(tǒng)所有程序都需要通過該框架實現(xiàn)下述核心功能:
1.應(yīng)用程序管理
2.用戶界面管理
3.圖形和窗口支持
4.多任務(wù)支持
5.處理觸摸及移動事件咕晋。
6.代表標(biāo)準(zhǔn)系統(tǒng)視圖和控件的對象
7.文本和web內(nèi)容相關(guān)操作
8.剪切雹拄、復(fù)制以及粘貼
9.使用動畫顯示用戶界面內(nèi)容
10.通過URL方式將其他應(yīng)用程序整合到系統(tǒng)
11.蘋果推送通知服務(wù)支持,請查看“蘋果推送通知服務(wù) ”
12.為殘疾用戶提供輔助功能
13.本地通知的調(diào)度和發(fā)送
14.創(chuàng)建PDF
15.使用定制輸入視圖(其行為類似系統(tǒng)鍵盤)
16.創(chuàng)建和系統(tǒng)鍵盤進(jìn)行交互的定制文本視圖
此外:UIKit還為下述和設(shè)備緊密相連的功能提供支持:
1.加速器數(shù)據(jù)
2.內(nèi)置相機(jī)(存在相機(jī)的設(shè)備)
3.用戶的圖片庫
4.設(shè)備名稱和模型信息
5.電池狀態(tài)信息
6.距離感應(yīng)器信息
7.來自綁定聽筒的遠(yuǎn)程控制信息