本文轉載至 http://jingyan.baidu.com/article/cdddd41c57360853cb00e124.htmlhtml
Core Services層是系統不少部分的基礎部分,也許應用程序並不直接使用這些服務,可是Core Services層爲全部的應用程序提供基礎系統服務。今天主要和你們分享一下Core Services層一些關鍵技術。但願對你們可以有所幫助!web
本文轉載至 http://jingyan.baidu.com/article/cdddd41c57360853cb00e124.htmlhtml
Core Services層是系統不少部分的基礎部分,也許應用程序並不直接使用這些服務,可是Core Services層爲全部的應用程序提供基礎系統服務。今天主要和你們分享一下Core Services層一些關鍵技術。但願對你們可以有所幫助!web
1、雲存儲正則表達式
iOS5.0引入,雲存儲容許你的應用程序存儲用戶文檔和數據到雲端,以及從用戶的電腦和iOS設備訪問這些數據。把用戶的數據存在雲端,意味着用戶能夠在任何設備上查看以及編輯這些文檔無需同步以及設備間傳遞這些文件。在用戶的iCloud的帳號中存儲這些文件還爲用戶提供了一層安全防禦,即便用戶丟失了一個設備,這些都是從藍鷗講師那學到的,是他們讓咱們懂得了更多。用戶的數據是不會所以而丟失的。有兩種方法可讓應用程序使用雲存儲,每一種都有本身的使用場景。一、iCloud文檔存儲------使用這個特性存儲用戶文檔和數據到用戶的iCloud帳戶二、iCloud鍵值數據存儲-----使用這個特性去共享應用程序中的少許實例對象。大多數應用程序使用iCloud文檔存儲特性經過iCloud帳戶共享文檔數據,這個特性是用戶對iCloud存儲的認識,用戶關心的是這些共享的文件是否跨設備了,是否能夠經過一個給定的設備查看以及管理這些文件。相比之下,iCloud鍵值數據存儲是用戶看不到的,這是你應用程序共享少許數據(幾十KB)一種方式。應用程序使用這個特性來存儲非關鍵性的數據,而不是重要數據。例如存儲用戶偏好。注:如要了解如何在應用程序中使用iCloud,參考iCloud Design Guide。sql
2、自動引用計數iOS5引入,自動引用計數(ARC)是一個編譯器級別的功能,簡化了OC對象生命週期的管理,相對於開發者本身時刻記着什麼時候retain和release對象,ARC會在編譯期間自動評估你對象的生命週期而且插入適當的內存管理方法(retain和release方法)。 ARC替代了出如今iOS早期的版本中的傳統內存管理模式,你建立的新工程默認使用ARC,Xcode也提供了工具把非ARC工程轉換爲ARC工程,更多關於ARC的信息,參考Transitioning to ARC Release Notes。數據庫
3、塊對象iOS4.0引入,block對象是一個C語言層面上的對象,能夠嵌入到你的C和OC代碼裏面。block對象本質上是一個匿名函數,能夠像函數同樣擁有參數和返回值,其餘語言裏把這種對象稱做closure或者lambda。blocks多用於回調或者用於綁定操做和操做須要的數據。在iOS中,blocks經常使用於如下場景:一、做爲代理和代理方法的替代二、做爲回調方法的替代三、一次性操做完成以後的事件處理四、執行集合中每一個元素的方法五、和disPatch queue一通實現異步任務。關於block對象以及它們的使用的介紹,參考A Short Practical Guide to Blocks。更多關於blocks的信息,參考Blocks Programming Topics。編程
4、數據保護iOS4.0引入,數據保護容許應用程序使用設備內置的編碼器對用戶的敏感數據進行處理。當你的應用程序把某個文件指定爲保護類型時,系統會把這個文件以加密形式存放在硬盤上。當設備被鎖定時,你的應用程序和潛在的入侵者都沒法訪問文件內容。然而,當你的設備被用戶解鎖以後,會建立一個解密密鑰,以容許你的應用程序訪問文件。iOS5以後,數據保護增長了被保護文件的安全級別,這些級別容許你訪問一個已經打開的文件,儘管用戶已經鎖定了設備,或是解鎖屏幕後用戶隨後又鎖定了設備。實現數據保護須要你考慮如何建立和管理想要保護的數據。應用程序必須保證數據建立時的安全,還要處理鎖屏與解鎖時數據的安全。更多關於如何在應用程序爲文件添加數據安全的資料,參考iOS App Programming Guide。數組
5、文件共享支持iOS3.2引入,文件分享能讓您經過iTunes(版本9.1之後)直接看到應用程序中的用戶數據。一個應用程序設置了文件共享以後,Documents文件夾下的內容能夠被用戶從iTunes中看到,用戶能夠根據須要經過iTunes往此文件夾增長文件或者今後文件夾移出文件。這個特性不容許你把文件共享給同一個設備上的其餘應用程序。若是要給其餘程序共享文件你須要使用粘貼板後者文檔交互控制器對象。啓動應用程序的文件共享,須要完成如下事項:一、往應用程序的Info.plist文件添加一個key「UIFileSharingEnabled」,而且將此key對應的value設置爲YES。二、把你須要共享的文件存放到應用程序的Documents文件夾裏面。三、設備鏈接到iTunes以後,iTunes應用程序選項卡中的文件共享部分會顯示你設備裏全部支持文件共享的應用程序,用戶能夠把文件拖動到應用程序Documents文件夾或者把裏面的文件拖動到電腦上。支持文件共享的應用程序能檢測到是否有文件添加到Documents文件夾,應用程序須要作適當的迴應。例如,你的應用程序應該在界面上顯示出來這些新添加的文件,而不是彈出Documents文件列表詢問用戶須要作什麼操做。更多UIFileSharingEnabled的信息,參考Information Property List Key Reference。緩存
6、Grand Central DispatchiOS4.0引入,它是BSD級別的技術,可用於在應用程序內管理多個任務的執行,GCD技術將異步編程模型和高度優化內核結合在一塊兒,可做爲多線程的便捷(且更高效)替代。同時,它爲許多底層任務(例如讀寫文件描述符、實現計時器、監視信號和處理事件等)提供替代方案。更多關於程序內使用GCD的方式,參考Concurrency Programming Guide。更多關於GCD函數的信息,參考Grand Central Dispatch(GCD)Reference。安全
7、程序內購買iOS3.0引入,經過該功能,你能夠在應用程序內出售內容或者服務,該功能使用Store Kit框架來實現,它能夠爲使用iTunes帳戶進行的財務交易的處理提供基礎支持,應用程序只須要處理用戶體驗及代售內容或服務的展示。iOS6中,增長了內容託管和應用程序內購買iTunes內容的支持。經過內容託管,你能夠把用於下載的內容存儲在蘋果的服務器上,經過iTunes內容購買功能,你的應用程序標記須要賣的物品,剩下的一些事物由Store Kit幫你處理。更多關於程序內購買的支持,參考In-App Purchase Programming Guide。更多關於Store Kit框架的信息,參考Store Kit Framework。性能優化
8、SQLiteSQLite庫容許開發者將一個輕量級的SQL數據庫潛入到應用程序,並且開發者不須要運行獨立的遠程數據庫服務器進程。在此以後,開發者能夠在應用程序中建立本地數據庫文件,管理文件的表和記錄。雖然SQLite數據庫出於通用目的而設計,但它仍是針對數據庫記錄的快速訪問作過優化。用於訪問SQLite庫的頭文件位於<iOS_SDK>/usr/include/sqlite3.h。在該路徑中,<iOS_SDK>是Xcode安裝目錄中目標SDK的路徑,更多關於如何使用SQLite的信息,訪問http://www.sqlite.org網站。
9、XML支持Foundation框架支持使用NSXMLParser類從XML文檔中解析元素,而libxml2庫則爲操做XML內容提供支持,libxml2庫是開源的,它可讓你快速地解析或寫入任意的XML數據,也能夠將XML內容轉換爲HTML文件。用於訪問libxml2庫的頭文件位於<iOS_SDK>/usr/include/libxml2/。在該路徑中,<iOS_SDK>是Xcode安裝目錄中目標SDK的路徑,更多libxm2的使用信息,請訪問http://xmlsoft.org/index.html網站。
Core Services層框架
Accounts FrameworkiOS5引入,爲特定用戶帳號提供一個單點登陸模型,單點登陸提升了用戶體驗,由於應用程序不在須要分別提示用戶輸入帳戶的登陸信息。它還簡化了你應用程序管理帳戶受權的過程。iOS5.0裏,應用程序可使用這個框架結合Twitter框架訪問用戶的Twitter帳戶。更多關於Accounts框架類的信息,參考Accounts Framework Reference。
Address Book FrameworkAddress Book框架支持編程訪問存儲於用戶設備中的聯繫人信息。若是應用程序使用到聯繫人信息,則可經過該框架訪問並修改用戶聯繫人數據庫的記錄。舉個例子,經過使用該框架,聊天程序能夠獲取一個聯繫人列表,利用此列表初始化聊天會話,並在聯繫人視圖顯示列表的聯繫人。iOS6之後,訪問用戶聯繫人信息須要通過用戶的容許,應用程序必須作好被拒絕訪問的準備,應用程序也須要提供一個屬性列表來描述爲何要訪問通信錄,用以獲取用戶許可。更多Adress Book框架的功能,參考Address Book Framework Reference for iOS.
Ad support FrameworkiOS6引入,Ad Support框架爲要用廣告服務的應用程序提供了一個廣告標識符。這個框架一樣提供了一個opt-out標識來標明用戶是否退出廣告。應用程序須要讀取並根據opt-out標識,決定是否訪問廣告標識符。更多關於這個框架的信息,參考Ad Support Framework Reference。
CFNetwork FrameworkCFNetwork框架提供一組高性能基於C語言的接口,它們爲使用網絡協議提供面向對象抽象。經過這些抽象,你能夠對協議棧進行更精細的控制,並且可使用諸如BSD socket這類底層結構。你也能夠經過該框架簡化諸如與FTP或HTTP服務器通信以及DNS主機解析這類任務。下面列舉一些可使用CFNetwork框架執行的任務:一、使用BSD sockets二、使用SSL或TLS建立加密鏈接三、解析DNS主機四、使用HTTP,校驗HTTP以及HTTPS服務器五、使用FTP服務器六、發佈、解析並瀏覽Bonjour服務。CFNetwork理論及實現都以BSD socket爲基礎。更多關於如何使用CFNetwork框架的信息,參考CFNetwork Programming Guide和CFNetwork Framework Reference。
Core Data FrameworkiOS3.0引入,Core Data框架是一種管理模型-視圖-控制器應用程序數據模型的技術,它適用於數據模型已經高度結構化的應用程序。經過此框架,您不再須要經過編程定義數據結構,而是經過Xcode提供的圖形工具構造一份表明數據模型的圖標。在程序運行的時候,Core Data框架就會建立並管理數據模型的實例,同時還對外提供數據模型訪問接口。經過Core Data管理應用程序的數據模型,能夠極大程度減小編寫的代碼數量。除此以外,Core Data還具備下述特徵:一、將對象數據存儲在SQLite數據庫以得到性能優化二、提供NSFetchedResultsController類用於管理表視圖的數據三、管理undo/redo操做四、屬性值校驗支持五、支持對數據變化進行傳播,而且不會改變對象間的關聯六、支持對數據進行歸檔,過濾,並支持對內存數據進行管理若是您正在開發新應用程序或打算對某個現有的程序進行大幅度更新,請考慮使用Core Data。若是須要了解如何在iOS應用程序中使用Core Data,參考Core Data Tutorial for iOS.若是須要進一步瞭解Core Data框架中的類,參考Core Data Framework Reference。
Core Foundation FrameworkCore Foundation框架是一組C語言接口,它們爲iOS應用程序提供基本數據管理和服務功能。下面列舉該框架支持進行管理的數據以及可提供的服務:一、羣體數據類型(數組、集合等)二、程序包三、字符串管理四、日期和時間管理五、原始數據塊管理六、偏好管理七、URL及數據流操做八、線程和RunLoop九、端口和socket通信Core Foundation框架和Foundation框架緊密相關,它們爲相同功能提供接口,但Foundation框架提供OC接口。若是您將Foundation對象和Core Foundation類型參雜使用,則可利用兩個框架之間的「toll-free-bridging」。所謂的Toll-free-bridging是說您能夠在某個框架的方法或函數同時使用Core Foundation和Foundation框架中的某些類型。不少數據類型支持這一特性,其中包括羣體和字符串數據類型。每一個框架的類和類型描述都會對每一個對象是否爲toll-free bridged,應和什麼對象進行橋接進行說明。更多信息,參考Core Foundation Framework Reference。
Core Location FrameworkCore Location礦建可用於定位某個設備當前經緯度。它能夠利用設備硬件特性,經過附近的GPS、蜂窩基站或者WiFi信號等信息計算用戶方位。Maps應用程序就是利用此功能在地圖上顯示用戶當前位置。您能夠將此技術結合到應用程序中,以向用戶提供訪問信息。例如,應用程序課根據用戶當前位置搜索附近飯店、商店或其餘設施。在iOS3.0系統中,該框架開始支持訪問iOS設備的方向信息在iOS4.0系統中,該框架開始支持低能耗的方位監視服務,該服務利用蜂窩基站跟蹤用戶方位。如何使用Core Location去得到位置以及方向信息,參考Location Awareness Programming Guide和Core Location Framework Reference。
Core Media FrameworkiOS4.0引入了Core Media框架,此框架提供AV Foundation框架使用的底層媒體類型。只有少數須要對音頻或視頻建立及展現,進行精確控制的應用程序纔會涉及此框架,其餘大部分應用程序都用不上。如需進一步瞭解此框架的函數和數據類型,參考Core Media Framework Reference。
Core Motion FrameworkCore Motion框架提供了一個單一的接口集,用於訪問設備上全部基於運動的數據。這個框架提供了一系列Block接口來訪問和處理原始或加工後的加速計數據。經過內置的陀螺儀,你能夠檢索原始數據、映射後的屬性以及在設備上的旋轉速率。你能夠在遊戲或者其餘須要經過運動進行輸入來提升用戶體驗的應用程序中使用加速計和陀螺儀。更多這個框架的類和方法的信息,參考Core Motion Framework Reference。
Core Telephony FrameworkiOS4.0引入了Core Telephony框架,此框架爲訪問具備蜂窩無線的設備上的電話信息提供接口,應用程序可經過它獲取用戶蜂窩無線服務的提供商信息。若是應用程序對於電話呼叫感興趣,也能夠在相應事件發生時獲得通知。如需進一步瞭解如何使用該框架的類和方法,參考Core Telephony Framework Reference。
Event Kit FrameworkiOS4.0引入了Event Kit框架,此框架爲訪問用戶設備的日曆事件提供接口,您能夠經過該框架訪問用戶日曆中現有事件,能夠增長新事件。日曆事件可包含鬧鈴,並且能夠配置鬧鈴激活規則。iOS6添加了建立和訪問用戶設備上提醒的功能,你建立的提醒會經過「提醒」應用程序呈現出來。此外訪問日曆和提醒須要經過用戶許可,應用程序要作好被拒絕訪問此功能的準備,一樣須要提供一個屬性列表來描述須要訪問的緣由,以便獲得用戶許可。更多這個框架中類和方法的信息,參考Event KitFramework Reference和Event Kit UI Framework。
Foundation FrameworkFoundation框架爲Core Foundation框架的許多功能提供OC封裝。您能夠參考Core Foundation Framework瞭解前面對Core Foundation框架的描述。Foundation框架爲下述功能提供支持:一、羣體數據類型(數組、集合等)二、程序包三、字符串管理四、日期和時間管理五、原始數據塊管理六、偏好管理七、URL及數據流操做八、線程和RunLoop九、Bonjour十、通信端口管理十一、國際化十二、正則表達式匹配1三、緩存支持如需進一步瞭解如何使用該框架的類和方法,參考Foundation Framework Reference。
Mobile Core Services FrameworkiOS3.0引入了Mobile Core Services框架,此框架定義統一類型標識符(UTIs)使用的底層類型。如需進一步瞭解此框架定義的類型,參考Uniform Type Identifiers Reference。
Newsstand Kit FrameworkiOS5引入了Newsstand框架,爲用戶提供了一個專屬位置來閱讀雜誌和報紙。出版商能夠在他們本身的應用程序使用Newsstand Kit框架將本身的報刊和雜誌放在Newsstand裏,它容許你在後臺下載新的報刊和雜誌,在你開始一個下載,系統會去處理下載操做,並通知你應用程序中有新的內容。更多關於管理Newsstand下載的類的信息,參考Newsstand Kit Framework Reference。更多關於如何使用遠程通知的信息,參考Local and Push Notification Programming Guide。
Pass Kit FrameworkiOS6引入,Pass Kit:使用web服務,一個新的文件格式,是OC層次上的框架,來實現通行證的下載。公司能夠建立通行證表明物品,例如優惠券、登機牌、活動門票和折扣卡業務。相對於攜帶這些實實在在的物品,Pass Kit實現了將這些信息存儲於iOS設備的功能,使用起來和實物是同樣的效果。通行證經過你公司的web服務建立,使用郵件、Safari或者你的程序傳遞到用戶的iOS設備,通行證自己使用了一個特殊的文件格式而且會在傳遞以前先加密。經過文件格式來區別不一樣的服務,以便用戶知道它是什麼(優惠券、打折卡等)。它可能包含一個條碼或者其餘信息,你能夠憑藉它獲取相應服務或者獲得所需物品。更多關於Pass Kit的信息以及如何將Pass Kit加入到你的應用程序,參考Passbook Programming Guide。
Quick Look FrameworkiOS4.0引入了Quick Look框架,應用程序能夠用該框架預覽沒法直接支持查看的文件內容。若是應用程序從網絡下載文件或者需處理來源未知的文件,則很是適合使用此框架。由於應用程序只要得到文件後,調用框架提供的視圖控制器就能夠直接在界面中顯示文件的內容。如需進一步瞭解該框架的類和方法,請參考Quick Look Framework Reference。
Social FrameworkiOS6.0引入了Social框架,提供了簡單的接口訪問用戶社交媒體帳戶。這個框架替代了iOS5引入的Twitter框架,而且增長了其餘社交帳戶的支持,包括FaceBook和新浪微博服務。用戶可使用這個框架經過用戶帳號發佈新的狀態和圖片。這個框架和Accounts框架配合使用爲用戶提供一個單點登陸(確保用戶帳號是容許訪問的)。更多Social框架的信息,參考Social Framework Reference。
Store Kit FrameworkiOS3.0引入Store Kit框架,此框架爲iOS應用程序內購買內容或服務提供支持。例如,開發者能夠利用此框架容許用戶解鎖應用程序的額外功能。或者假設您是一名遊戲開發人員,則可以使用此特性向玩家出售附加遊戲關卡。在上述的兩個狀況中,Store Kit框架會處於交易過程和財務相關的事件,包括處理用戶經過iTunes Store帳號發出的支付請求而且嚮應用程序提供交易相關信息。Store Kit框架主要關注交易過程當中和財務相關的事務,目的是爲了確保交易安全準確。應用程序須要處理交易事務的其餘因素,包括購買界面和下載恰當的內容。經過這種任務劃分方式,您就有用購買內容的控制權,能夠決定但願展現給用戶的購買界面以及什麼時候向用戶展現這些界面,同時也能夠決定和應用程序最匹配的交付機制。如需進一步瞭解Store Kit框架的使用方式,參考In-App Purchase Programming Guide和Store Kit Framework Reference。
System Configuration FrameworkSystem Configuration框架可用於肯定設備的網絡配置。您可使用該框架判斷WiFi或者蜂窩網絡鏈接是否正在使用中,也能夠用於判斷某個主機服務是否可使用。如需進一步瞭解此框架提供的接口,參考System Configuration Framework Reference。如需經過此框架獲取網絡信息的示例,參考Reachability示例代碼工程。
Core OS層Core OS層包含了不少技術的底層技術支持,在應用程序裏面,儘管你沒有直接使用這些底層技術,可是他們被高層的框架所使用。若是須要顯示的處理安全模塊或者與硬件通訊,你會Core OS層上的一些框架。
Accelerate FrameworkiOS4.0引入的,包含接口執行DSP、線性代數以及圖像處理計算。這個框架的優點:本身寫接口封裝這些底層高性能的接口,這些接口一旦寫成,就能夠很是方便的移植不一樣的程序中,而且支持全部iOS設備運行。更多關於Accelerate框架中函數的使用,參考 Accelerate Framework Reference。
Core Bluetooth Framework藍牙框架容許開發者與其餘低功耗藍牙設備交互,這個框架的OC接口容許你掃描低功耗藍牙設備,與其中一個設備鏈接或者斷開鏈接,讀取或者寫入服務的屬性,註冊服務以及監聽屬性的變化,等等。更多關於Core Bluetooth框架接口的介紹,參考 Core Bluetooth Framework Reference。
External Accessory FrameworkiOS3.0引入,External Accessory(外部輔助)框架提供了與iOS相關輔助設備通訊技術,外部輔助設備能夠經過30針的數據線鏈接或者經過藍牙進行無線鏈接。外部輔助框架提供了一種方法來獲取每一個可用的配件以及發起通訊會話,以後,還能夠經過相關命令直接控制配件。更多這個框架的使用信息,參考 External Accessory Programming Topics,以及http://developer.apple.com
Generic Security Services Services FrameworkiOS5引入的,通用安全服務框架爲iOS程序提供了一組標準的安全相關服務,這個框架的基本接口是在IETF RFC 2743和RFC 4401中指定的。除了提供標準的接口,iOS還增長了管理證書的接口(標準接口裏沒有,可是須要應用程序要求)。更多GSS框架的接口,參考對應的頭文件。
Security FrameworkiOS系統不但提供內建的安全功能,還提供Security框架,用於保證程序所管理數據的安全,該框架提供的接口可用於管理證書、公鑰、私鑰以及信任策略。它支持生成加密的安全僞隨機數。同時,它也支持對證書和KeyChain密鑰進行保存,是用戶敏感數據的安全倉庫。Common Crypto接口另外還支持對稱加密、HMAC以及Digests。Digests的功能和OpenSSL庫經常使用的功能兼容,可是iOS沒法使用OpenSSL庫。iOS3.0以後,你可讓所建立的多個應用程序共享某些KeyChain項,這樣可讓相同套件內的應用程序胡勇更流暢。例如,你能夠在應用程序間共享用戶密碼和其餘元素,經過這種方法,你就不須要在每一個應用程序單獨對用戶作出提示。如應用程序須要共享數據,則每一個應用程序的Xcode功能必須一樣的受權。更多Security框架的功能和特性,參考Security Framework Reference。如何使用Keychain參考,KeyChain Services Programming Guide。如何在Xcode工程中設置應用程序的受權,參考Tools Workflow Guide for iOS。如需瞭解能夠對哪些應用程序受權進行配置,參考KeyChain Services Reference中的SecItemAdd函數。
System系統層包括內核環境、驅動及操做系統底層UNIX接口,內核以Mach爲基礎,它負責操做系統的各個方面,包括管理系統的虛擬內存、線程、文件系統、網絡以及進程間通訊。這一層包含的驅動是系統硬件和系統框架的接口,處於安全方面的考慮,內核和驅動只容許少數系統框架和應用程序訪問。應用程序可使用iOS提供的LibSystem庫訪問多種操做系統底層功能。LibSystem庫的接口基於C語言,可爲下述功能提供支持:一、線程(POSIX線程)二、網絡(BSD sockets)三、文件系統訪問四、標準I/O五、Bonjour和DNS服務六、區域信息七、內存分配八、數學計算許多Core OS技術的頭文件位於<iOS_SDK>/usr/include/目錄,<iOS_SDK>是Xcode安裝目錄中目標SDK的路徑。若是須要了解這些技術相關的功能,參考iOS Manual Pages
若是你還想了解更多的有關iOS培訓方面的知識,如:C語言、OC語言、UI單視圖控制器、UI多視圖控制器、硬件特性以及底層支持,此外還有針對跨平臺開發的C++和Cocos2D-X,能夠多瞭解藍鷗,他們的內容更豐富,更詳細!!