很久之前就想寫點什么東西,感覺總是很浮燥不夠成熟,從今起為了走向自建靜態庫(.a 或者第三方framework,雖然這里的framework跟系統真正動態庫長相一樣,但仍然是靜態庫)開發,開始可以提供他人實用的框架,為此重溫下知識 。
Core OS: 底層處理,提供上層支撐(其中包括內核環境、驅動及操作系統底層UNIX 接口)。
?由FreeBSD和Mach所改寫的Darwin, 是開源、符合POSIX標準的一個Unix核心。這一層包含或者說是提供了整個iPhone OS的一些基礎功能,比如:硬件驅動, 內存管理,程序管理,線程管理(POSIX),文件系統,網絡(BSD Socket),以及標準輸入輸出等等,所有這些功能都會通過C語言的API來提供。
iPhone OS提供了許多訪問操作系統底層功能的接口集,并通過LibSystem庫萊訪問這些功能。如:線程、網絡(sockets)、文件系統訪問、標準I/O、Bonjour和DNS服務、內存分配、數學計算、區域信息。
介紹下POSIX、FreeBSD通往開發跨平臺應用,有必要需要了解點背景:
POSIX表示可移植操作系統接口(Portable Operating System Interface ,縮寫為 POSIX ),POSIX標準定義了操作系統應該為應用程序提供的接口標準,是IEEE為要在各種UNIX操作系統上運行的軟件而定義的一系列API標準的總稱,其正式稱呼為IEEE 1003,而國際標準名稱為ISO/IEC 9945。
POSIX標準意在期望獲得源代碼級別的軟件可移植性。換句話說,為一個POSIX兼容的操作系統編寫的程序,應該可以在任何其它的POSIX操作系統(即使是來自另一個廠商)上編譯執行。
FreeBSD是一種類UNIX操作系統,是由經過BSD、386BSD和4.4BSD發展而來的Unix的一個重要分支。FreeBSD 為不同架構的計算機系統提供了不同程度的支持。并且一些原來BSD UNIX的開發者后來轉到FreeBSD的開發,使得FreeBSD在內部結構和系統API上和UNIX有很大的兼容性。由于FreeBSD寬松的法律條款,其代碼被好多其他系統借鑒包括蘋果公司的MacOS X,正因此由于MacOS X的UNIX兼容性,使得Mac OS X獲得了UNIX商標認證。
Accessory.framework 、External Accessory.framework 、Security.framework
Core Services:該層提供了大量功能,比如Foundation.framework和CoreFoundation.framework.
Foundation類層次的根是NSObject類,它(和NSObject及NSCopying協議一起)定義了基本的對象屬性和行為。
經常涉及運用的系統庫,以及簡單介紹:
AddressBook.framework
?? 支持編程訪問存儲于用戶設備中的聯系人信息。如果應用程序使用到聯系人信息,則可通過該框架訪問并修改用戶聯系人數據庫的記錄。
CFNetwork.framework
提供一組高性能基于C語言的接口,它們為使用網絡協議提供面向對象抽象。
1.對協議棧進行更精細的控制,而且可以使用諸如 BSD socket這類底層結構。
2.簡化FTP、HTTP服務器通訊、DNS主機解析任務
應用場景包括
1.使用SSL或TLS創建加密連接
2.使用BSD sockets
3.解析DNS主機
4.使用HTTP,校驗HTTP以及HTTPS服務器。
5.使用FTP服務器
6.發布、解析并瀏覽 Bonjour服務。
Core Data.framework
Core Data框架是一種管理模型-視圖-控制器應用程序數據模型的技術,它適用于數據模型已經高度結構化的應用程序。通過此框架,您再也不需要通過編程定義數據結構,而是通過Xcode提供的圖形工具構造一份代表數據模型的圖表。
CoreFoundation.framework
? ?是一組C語言接口,它們為iOS應用程序提供基本數據管理和服務功能。
Foundation.framework
Foundation框架提供Objective-C接口。如果您將Foundation對象和Core Foundation類型摻雜使用,則可利用兩個框架之間的 “toll-free bridging”。所謂的Toll-free bridging是說您可以在某個框架的方法或函數同時使用Core Foundatio和Foundation 框架中的某些類型。很多數據類型支持這一特性,其中包括群體和字符串數據類型。每個框架的類和類型描述都會對某個對象是否為 toll-free bridged,應和什么對象橋接進行說明。
Core Location.framework
可用于定位某個設備當前經緯度。它可以利用設備具備的硬件,通過附近的GPS、蜂窩基站或者WiFi信號等信息計算用戶方位。Maps應用程序就是利用此功能在地圖上顯示用戶當前位置。您可以將此技術結合到應用程序,以此向用戶提供方位信息。
Core Telephony.framework
此框架為訪問具有蜂窩無線的設備上的電話信息提供接口,應用程序可通過它獲取用戶蜂窩無線服務的提供商信息。如果應用程序對于電話呼叫感興趣,也可以在相應事件發生時得到通知
Event kit.framework
此框架為訪問用戶設備的日歷事件提供接口。您可以通過該框架訪問用戶日歷中現有事件,可以增加新事件。日歷事件可包含鬧鈴,而且可以配置鬧鈴激活規則。目前沒有定制化視圖擴展功能,以往項目只能自己實現類型功能。
SystemConfiguration.framwork
可用于確定設備的網絡配置。您可以使用該框架判斷Wi-Fi或者蜂窩連接是否正在使用中,也可以用于判斷某個主機服務是否可以使用。
Mobile Core Services.framework
此框架定義統一類型標識符 (UTIs)使用的底層類型。
QuickLook.framework
應用程序可以用過該框架預覽無法直接支持查看的文件內容。如果應用程序從網絡下載文件或者需處理來源未知的文件,則非常適合使用此框架。因為應用程序只要在獲得文件后,調用框架提供的視圖控制器就可以直接在界面中顯示文件的內容。
StoreKit.framework
此框架為iOS應用程序內購買內容或服務提供支持。Store Kit 框架會處于交易過程中和財務相關的事件,包括處理用戶通過 iTunes Store賬號發出的支付請求并且向應用程序提供交易相關信息。
Media 媒體層 上層處理與媒體相關諸如:處理圖片、視頻、音頻等相關操作。
AssetsLibrary.framework
框架提供一個查詢界面,您可以通過它查找用戶照片和數據。通過使用該框架,您可以訪問Photos管理的資產,包括用戶保存的相冊以及導入到設備中的圖片或視頻。而且您也可以將照片或者視頻保存到用戶的相冊
AVFoundation.framework
該框架包含的Objective-C 類可用于播放音頻內容。通過使用該框架,您可以播放聲音文件或播放內存中的音頻數據,也可以同時播放多個聲音,并對各個聲音的播放特定進行控制
Core Audio
Core Graphic.framework?
包含Quartz 2D繪圖API接口 。Quartz 是Mac OS X系統使用的向量繪圖引擎,它支持基于路徑繪圖、抗鋸齒渲染、漸變、圖片、顏色、坐標空間轉換、PDF文件的創建、顯示和解析。雖然API基于C語言,但是它使用基于對象的抽象以表示基本繪圖對象。
Core Video.framework
該框架為Core Media提供緩存和緩存池的支持。大多數應用程序都不應該直接使用該框架
ImageIO.framework
該框架的接口可用于導入或導出圖像數據及圖像元數據。該框架建構于 Core Graphics數據類型和函數之上,能夠支持iOS 上所有的標準圖像類型。
MediaPlayer.framework
為應用程序播放視頻和音頻內容提供高級支持。通過該框架,您就可以使用標準系統界面播放視頻。 iOS 3.0增加了對訪問用戶iTune庫的支持。因此,您可以利用該框架播放音樂曲目、播放列表、搜索歌曲并向用戶顯示媒體選取界面。
OpenAL.framework
OpenAL接口是在應用程序中發布方位音頻的跨平臺標準。通過使用該框架,您可以在游戲或者要求有方位音頻輸出的程序中實現高性能、高質量的音頻。OpenAL是跨平臺的標準,iOS平臺使用OpenAL編寫的代碼模塊可以移植到許多其他的平臺運行。
OpenGLES.framwork
提供的工具可用于繪制2D及3D內容。該框架基于C語言,能夠和設備硬件緊密協作,為全屏游戲類型的應用程序提供很高的幀速率。
QuartzCore.framework
包含Core Animation接口。Core Animation是高級動畫制作和混合技術,它使用經過優化的渲染路徑實現復雜的動畫和視覺效果。它提供的高級Objective-C接口可對動畫效果進行配置,然后在設備硬件中進行渲染,以此來提高程序的性能。Core Animation框架被整合到iOS的許多部分(包括UIKit框架中的許多類(如UIView)),可以為多種系統行為提供動畫效果。您也可以使用該框架中的Objective-C接口直接創建定制動畫
Metal.framework ?iOS8.0以后 A7 CPU架構 ?相當強大的處理引擎,相信會逐步取代OpenGLES。
metal技術正是可以讓我們在移動端體驗主機端畫質的引擎。
Cocoa Touch?
包含創建 iOS應用程序所需的關鍵框架。上至實現應用程序可視界面,下至與高級系統服務交互,都需要該層技術提供底層基礎。在開發應用程序的時候,請盡可能不要使用更底層的框架,盡可能使用該層的框架。
AddressBookUI.framework
EventKitUI.framework
iAd.framework
GameKit.framework
MapKit.framework
MessageUI.framework
UIKit.framework ? 重點介紹下UIKit.framwork,雖然無時無刻不在使用它:
UIKit.framework Objective-C編程接口為實現iOS應用程序的圖形及事件驅動提供關鍵基礎。iOS系統所有程序都需要通過該框架實現下述核心功能:
1.應用程序管理
2.用戶界面管理
3.圖形和窗口支持
4.多任務支持
5.處理觸摸及移動事件。
6.代表標準系統視圖和控件的對象
7.文本和web內容相關操作
8.剪切、復制以及粘貼
9.使用動畫顯示用戶界面內容
10.通過URL方式將其他應用程序整合到系統
11.蘋果推送通知服務支持,請查看“蘋果推送通知服務 ”
12.為殘疾用戶提供輔助功能
13.本地通知的調度和發送
14.創建PDF
15.使用定制輸入視圖(其行為類似系統鍵盤)
16.創建和系統鍵盤進行交互的定制文本視圖
此外:UIKit還為下述和設備緊密相連的功能提供支持:
1.加速器數據
2.內置相機(存在相機的設備)
3.用戶的圖片庫
4.設備名稱和模型信息
5.電池狀態信息
6.距離感應器信息
7.來自綁定聽筒的遠程控制信息