Core Services层
本文轉載至?http://jingyan.baidu.com/article/cdddd41c57360853cb00e124.html
?
Core Services層是系統很多部分的基礎部分,也許應用程序并不直接使用這些服務,但是Core Services層為所有的應用程序提供基礎系統服務。今天主要和大家分享一下Core Services層一些關鍵技術。希望對大家能夠有所幫助!
方法/步驟
一、云存儲
iOS5.0引入,云存儲允許你的應用程序存儲用戶文檔和數據到云端,以及從用戶的電腦和iOS設備訪問這些數據。把用戶的數據存在云端,意味著用戶可以在任何設備上查看以及編輯這些文檔無需同步以及設備間傳遞這些文件。在用戶的iCloud的賬號中存儲這些文件還為用戶提供了一層安全防護,即使用戶丟失了一個設備,這些都是從藍鷗講師那學到的,是他們讓我們懂得了更多。用戶的數據是不會因此而丟失的。有兩種方法可以讓應用程序使用云存儲,每一種都有自己的使用場景。1、iCloud文檔存儲------使用這個特性存儲用戶文檔和數據到用戶的iCloud賬戶2、iCloud鍵值數據存儲-----使用這個特性去共享應用程序中的少量實例對象。大多數應用程序使用iCloud文檔存儲特性通過iCloud賬戶共享文檔數據,這個特性是用戶對iCloud存儲的認識,用戶關心的是這些共享的文件是否跨設備了,是否可以通過一個給定的設備查看以及管理這些文件。相比之下,iCloud鍵值數據存儲是用戶看不到的,這是你應用程序共享少量數據(幾十KB)一種方式。應用程序使用這個特性來存儲非關鍵性的數據,而不是重要數據。例如存儲用戶偏好。注:如要了解如何在應用程序中使用iCloud,參考iCloud Design Guide。
?
二、自動引用計數iOS5引入,自動引用計數(ARC)是一個編譯器級別的功能,簡化了OC對象生命周期的管理,相對于開發者自己時刻記著何時retain和release對象,ARC會在編譯期間自動評估你對象的生命周期并且插入適當的內存管理方法(retain和release方法)。?ARC替代了出現在iOS早期的版本中的傳統內存管理模式,你創建的新工程默認使用ARC,Xcode也提供了工具把非ARC工程轉換為ARC工程,更多關于ARC的信息,參考Transitioning to ARC Release Notes。
三、塊對象iOS4.0引入,block對象是一個C語言層面上的對象,可以嵌入到你的C和OC代碼里面。block對象本質上是一個匿名函數,可以像函數一樣擁有參數和返回值,其他語言里把這種對象稱作closure或者lambda。blocks多用于回調或者用于綁定操作和操作需要的數據。在iOS中,blocks常用于以下場景:1、作為代理和代理方法的替代2、作為回調方法的替代3、一次性操作完成之后的事件處理4、執行集合中每個元素的方法5、和disPatch queue一通實現異步任務。關于block對象以及它們的使用的介紹,參考A Short Practical Guide to Blocks。更多關于blocks的信息,參考Blocks Programming Topics。
四、數據保護iOS4.0引入,數據保護允許應用程序使用設備內置的編碼器對用戶的敏感數據進行處理。當你的應用程序把某個文件指定為保護類型時,系統會把這個文件以加密形式存放在硬盤上。當設備被鎖定時,你的應用程序和潛在的入侵者都無法訪問文件內容。然而,當你的設備被用戶解鎖之后,會創建一個解密密鑰,以允許你的應用程序訪問文件。iOS5之后,數據保護增加了被保護文件的安全級別,這些級別允許你訪問一個已經打開的文件,盡管用戶已經鎖定了設備,或是解鎖屏幕后用戶隨后又鎖定了設備。實現數據保護需要你考慮如何創建和管理想要保護的數據。應用程序必須保證數據創建時的安全,還要處理鎖屏與解鎖時數據的安全。更多關于如何在應用程序為文件添加數據安全的資料,參考iOS App Programming Guide。
五、文件共享支持iOS3.2引入,文件分享能讓您通過iTunes(版本9.1以后)直接看到應用程序中的用戶數據。一個應用程序設置了文件共享之后,Documents文件夾下的內容可以被用戶從iTunes中看到,用戶可以根據需要通過iTunes往此文件夾增加文件或者從此文件夾移出文件。這個特性不允許你把文件共享給同一個設備上的其他應用程序。如果要給其他程序共享文件你需要使用粘貼板后者文檔交互控制器對象。啟動應用程序的文件共享,需要完成以下事項:1、往應用程序的Info.plist文件添加一個key“UIFileSharingEnabled”,并且將此key對應的value設置為YES。2、把你需要共享的文件存放到應用程序的Documents文件夾里面。3、設備連接到iTunes之后,iTunes應用程序選項卡中的文件共享部分會顯示你設備里所有支持文件共享的應用程序,用戶可以把文件拖動到應用程序Documents文件夾或者把里面的文件拖動到電腦上。支持文件共享的應用程序能檢測到是否有文件添加到Documents文件夾,應用程序需要做適當的回應。例如,你的應用程序應該在界面上顯示出來這些新添加的文件,而不是彈出Documents文件列表詢問用戶需要做什么操作。更多UIFileSharingEnabled的信息,參考Information Property List Key Reference。
六、Grand Central DispatchiOS4.0引入,它是BSD級別的技術,可用于在應用程序內管理多個任務的執行,GCD技術將異步編程模型和高度優化內核結合在一起,可作為多線程的便捷(且更高效)替代。同時,它為許多底層任務(例如讀寫文件描述符、實現計時器、監視信號和處理事件等)提供替代方案。更多關于程序內使用GCD的方式,參考Concurrency Programming Guide。更多關于GCD函數的信息,參考Grand Central Dispatch(GCD)Reference。
七、程序內購買iOS3.0引入,通過該功能,你可以在應用程序內出售內容或者服務,該功能使用Store Kit框架來實現,它可以為使用iTunes賬戶進行的財務交易的處理提供基礎支持,應用程序只需要處理用戶體驗及代售內容或服務的展現。iOS6中,增加了內容托管和應用程序內購買iTunes內容的支持。通過內容托管,你可以把用于下載的內容存儲在蘋果的服務器上,通過iTunes內容購買功能,你的應用程序標記需要賣的物品,剩下的一些事物由Store Kit幫你處理。更多關于程序內購買的支持,參考In-App Purchase Programming Guide。更多關于Store Kit框架的信息,參考Store Kit Framework。
八、SQLiteSQLite庫允許開發者將一個輕量級的SQL數據庫潛入到應用程序,而且開發者不需要運行獨立的遠程數據庫服務器進程。在此之后,開發者可以在應用程序中創建本地數據庫文件,管理文件的表和記錄。雖然SQLite數據庫出于通用目的而設計,但它還是針對數據庫記錄的快速訪問做過優化。用于訪問SQLite庫的頭文件位于<iOS_SDK>/usr/include/sqlite3.h。在該路徑中,<iOS_SDK>是Xcode安裝目錄中目標SDK的路徑,更多關于如何使用SQLite的信息,訪問http://www.sqlite.org網站。
九、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框架執行的任務:1、使用BSD sockets2、使用SSL或TLS創建加密連接3、解析DNS主機4、使用HTTP,校驗HTTP以及HTTPS服務器5、使用FTP服務器6、發布、解析并瀏覽Bonjour服務。CFNetwork理論及實現都以BSD socket為基礎。更多關于如何使用CFNetwork框架的信息,參考CFNetwork Programming Guide和CFNetwork Framework Reference。
Core Data FrameworkiOS3.0引入,Core Data框架是一種管理模型-視圖-控制器應用程序數據模型的技術,它適用于數據模型已經高度結構化的應用程序。通過此框架,您再也不需要通過編程定義數據結構,而是通過Xcode提供的圖形工具構造一份代表數據模型的圖標。在程序運行的時候,Core Data框架就會創建并管理數據模型的實例,同時還對外提供數據模型訪問接口。通過Core Data管理應用程序的數據模型,可以極大程度減少編寫的代碼數量。除此之外,Core Data還具有下述特征:1、將對象數據存儲在SQLite數據庫以獲得性能優化2、提供NSFetchedResultsController類用于管理表視圖的數據3、管理undo/redo操作4、屬性值校驗支持5、支持對數據變化進行傳播,并且不會改變對象間的關聯6、支持對數據進行歸檔,過濾,并支持對內存數據進行管理如果您正在開發新應用程序或打算對某個現有的程序進行大幅度更新,請考慮使用Core Data。如果需要了解如何在iOS應用程序中使用Core Data,參考Core Data Tutorial for iOS.如果需要進一步了解Core Data框架中的類,參考Core Data Framework Reference。
Core Foundation FrameworkCore Foundation框架是一組C語言接口,它們為iOS應用程序提供基本數據管理和服務功能。下面列舉該框架支持進行管理的數據以及可提供的服務:1、群體數據類型(數組、集合等)2、程序包3、字符串管理4、日期和時間管理5、原始數據塊管理6、偏好管理7、URL及數據流操作8、線程和RunLoop9、端口和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框架為下述功能提供支持:1、群體數據類型(數組、集合等)2、程序包3、字符串管理4、日期和時間管理5、原始數據塊管理6、偏好管理7、URL及數據流操作8、線程和RunLoop9、Bonjour10、通訊端口管理11、國際化12、正則表達式匹配13、緩存支持如需進一步了解如何使用該框架的類和方法,參考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語言,可為下述功能提供支持:1、線程(POSIX線程)2、網絡(BSD sockets)3、文件系統訪問4、標準I/O5、Bonjour和DNS服務6、區域信息7、內存分配8、數學計算許多Core OS技術的頭文件位于<iOS_SDK>/usr/include/目錄,<iOS_SDK>是Xcode安裝目錄中目標SDK的路徑。如果需要了解這些技術相關的功能,參考iOS Manual Pages
如果你還想了解更多的有關iOS培訓方面的知識,如:C語言、OC語言、UI單視圖控制器、UI多視圖控制器、硬件特性以及底層支持,此外還有針對跨平臺開發的C++和Cocos2D-X,可以多了解藍鷗,他們的內容更豐富,更詳細!!
總結
以上是生活随笔為你收集整理的Core Services层的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【斗医】【11】Web应用开发20天
- 下一篇: Eclipse文件夹导入Jar