很久之前就想寫點什么東西,感覺總是很浮燥不夠成熟,從今起為了走向自建靜態(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)上運(yùn)行的軟件而定義的一系列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)常涉及運(yùn)用的系統(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編寫的代碼模塊可以移植到許多其他的平臺運(yùn)行。
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)強(qiá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)程控制信息