iPhone SDK 包含哪些東西?

第一部分:

在使用Intel芯片的Macintosh計(jì)算機(jī)開(kāi)發(fā)iOS應(yīng)用程序所需的全部接口央渣、工具以及資源全都包含于iPhone SDK计盒。

蘋(píng)果公司將大部分系統(tǒng)接口發(fā)布在框架這種特殊的數(shù)據(jù)包。一個(gè)框架就是一個(gè)目錄痹屹,它包含一個(gè)動(dòng)態(tài)共享庫(kù)以及使用這個(gè)庫(kù)所需的資源(例如頭文件章郁、圖像以及幫助應(yīng)用程序等)。如果要使用某個(gè)框架志衍,則需要將其鏈接到應(yīng)用程序工程暖庄,這一點(diǎn)和使用其他共享庫(kù)相似。另外楼肪,您還需要告知開(kāi)發(fā)工具何處可以找到框架頭文件以及其他資源培廓。

除了使用框架,蘋(píng)果公司還通過(guò)標(biāo)準(zhǔn)共享庫(kù)的形式來(lái)發(fā)布某些技術(shù)春叫。 由于iOS以UNIX為基礎(chǔ)肩钠,操作系統(tǒng)底層的許多技術(shù)都源自開(kāi)源技術(shù),這些技術(shù)的許多接口可以從標(biāo)準(zhǔn)庫(kù)和接口目錄訪問(wèn)暂殖。

SDK中還包含下述重要組件:

Xcode工具-提供iOS應(yīng)用程序開(kāi)發(fā)工具价匠,包括如下關(guān)鍵應(yīng)用程序:

Xcode -是一個(gè)集成開(kāi)發(fā)環(huán)境,它負(fù)責(zé)管理應(yīng)用程序工程呛每。您可以通過(guò)它來(lái)編輯踩窖、編譯、運(yùn)行以及調(diào)試代碼晨横。Xcode還集成了許多其他工具洋腮,它是開(kāi)發(fā)過(guò)程中使用到的主要應(yīng)用程序。

Interface Builder-以可視化方式組裝用戶接口的工具手形。通過(guò)Interface Builder創(chuàng)建出來(lái)的接口對(duì)象將會(huì)保存到某種特定格式的資源文件啥供,并且在運(yùn)行時(shí)加載到應(yīng)用程序。

Instruments- 運(yùn)行時(shí)性能分析和調(diào)試工具库糠。您可以通過(guò) Instruments 收集應(yīng)用程序運(yùn)行時(shí)的行為信息伙狐,并利用這些信息來(lái)確認(rèn)可能存在的問(wèn)題。

iPhone模擬器-是Mac OS X平臺(tái)應(yīng)用程序,它對(duì)iOS技術(shù)棧進(jìn)行模擬鳞骤,以便于您可以在基于Intel的Macintosh計(jì)算機(jī)上測(cè)試iOS應(yīng)用程序窒百。

iOS參考庫(kù)- SDK默認(rèn)包含iOS的參考文檔黍判。另外豫尽,如果文檔庫(kù)有更新,則更新會(huì)被自動(dòng)下載到本地顷帖。通過(guò)選擇Help > Developer Documentation就可以看到參考庫(kù)美旧。

SDK提供編寫(xiě)應(yīng)用程序所需的軟件,而且Xcode和Instruments允許您直接與綁定設(shè)備進(jìn)行交互贬墩,在目標(biāo)硬件運(yùn)行并調(diào)試代碼榴嗅。如果您需要在實(shí)際設(shè)備上開(kāi)發(fā),請(qǐng)加入蘋(píng)果公司的收費(fèi)iPhone開(kāi)發(fā)者計(jì)劃陶舞,并將設(shè)備配置成開(kāi)發(fā)用途嗽测。如需進(jìn)一步了解iPhone開(kāi)發(fā)者計(jì)劃,請(qǐng)向ITCH-ios 培訓(xùn)專業(yè)老師咨詢肿孵。

如果您需要了解如何安裝iPhone SDK以及如何使用iPhone SDK開(kāi)發(fā)iOS應(yīng)用程序唠粥,則請(qǐng)參考iOS開(kāi)發(fā)指南。如果進(jìn)一步了解iOS的框架停做,并且希望了解何處可以找到底層的系統(tǒng)庫(kù)晤愧,則請(qǐng)參考“iOS框架”◎入纾【ITCH-ios 培訓(xùn)專業(yè)學(xué)院】

第二部分:

iPhone SDK 包含哪些東西官份?

蘋(píng)果公司將大部分系統(tǒng)接口發(fā)布在框架這種特殊的數(shù)據(jù)包。一個(gè)框架就是一個(gè)目錄烙丛,它包含一個(gè)動(dòng)態(tài)共享庫(kù)以及使用這個(gè)庫(kù)所需的資源(例如頭文件舅巷、圖像以及幫助應(yīng)用程序等)。如果要使用某個(gè)框架河咽,則需要將其鏈接到應(yīng)用程序工程钠右,這一點(diǎn)和使用其他共享庫(kù)相似。另外库北,您還需要告知開(kāi)發(fā)工具何處可以找到框架頭文件以及其他資源

除了使用框架爬舰,蘋(píng)果公司還通過(guò)標(biāo)準(zhǔn)共享庫(kù)的形式來(lái)發(fā)布某些技術(shù)。 由于iOS以UNIX為基礎(chǔ)寒瓦,操作系統(tǒng)底層的許多技術(shù)都源自開(kāi)源技術(shù)情屹,這些技術(shù)的許多接口可以從標(biāo)準(zhǔn)庫(kù)和接口目錄訪問(wèn)。

Cocoa Touch 層

Cocoa Touch層包含創(chuàng)建 iOS應(yīng)用程序所需的關(guān)鍵框架杂腰。上至實(shí)現(xiàn)應(yīng)用程序可視界面垃你,下至與高級(jí)系統(tǒng)服務(wù)交互,都需要該層技術(shù)提供底層基礎(chǔ)。在開(kāi)發(fā)應(yīng)用程序的時(shí)候惜颇,請(qǐng)盡可能不要使用更底層的框架皆刺,盡可能使用該層的框架。

多任務(wù)

盡管應(yīng)用程序進(jìn)入后臺(tái)就會(huì)被掛起凌摄,但可以通過(guò)下述的技術(shù)讓其在后臺(tái)繼續(xù)運(yùn)行:

應(yīng)用程序可以請(qǐng)求一定的時(shí)間完成某些重要的任務(wù)羡蛾。

應(yīng)用程序可以聲明自身支持的某種服務(wù)需要獲得定期后臺(tái)執(zhí)行時(shí)間。

應(yīng)用程序可以使用本地通告在指定時(shí)間向用戶發(fā)通知锨亏。這種方式對(duì)于應(yīng)用程序是否運(yùn)行沒(méi)有要求痴怨。

不管應(yīng)用程序是被掛起還是在后臺(tái)運(yùn)行,支持多任務(wù)不需要付出額外的工作器予。但是在某些情況(例如內(nèi)存不足)下浪藻,應(yīng)用程序可能會(huì)被結(jié)束運(yùn)行。因此乾翔,應(yīng)用程序應(yīng)該可以在任何時(shí)候退出爱葵。這就意味著許多在退出應(yīng)用程序時(shí)需要執(zhí)行的任務(wù)必須改為在應(yīng)用程序切換到后臺(tái)的時(shí)候執(zhí)行。這就要求您在應(yīng)用程序委托中實(shí)現(xiàn)一些新的方法以響應(yīng)程序的狀態(tài)切換反浓。

數(shù)據(jù)保護(hù)

和敏感用戶數(shù)據(jù)打交道的應(yīng)用程序可以使用設(shè)備內(nèi)建加密功能(有些設(shè)備可能不提供內(nèi)建加密功能)對(duì)數(shù)據(jù)進(jìn)行保護(hù)萌丈。如果應(yīng)用程序指定某個(gè)文件受保護(hù),系統(tǒng)會(huì)以加密格式將該文件保存在磁盤(pán)勾习。當(dāng)設(shè)備鎖住的時(shí)候浓瞪,您的應(yīng)用程序以及其他潛在的闖入者都不能訪問(wèn)該文件,而當(dāng)用戶解鎖設(shè)備后巧婶,系統(tǒng)會(huì)生成一份密鑰以便您的應(yīng)用程序就訪問(wèn)該文件乾颁。

如需實(shí)現(xiàn)數(shù)據(jù)保護(hù),應(yīng)用程序應(yīng)在待保護(hù)數(shù)據(jù)的創(chuàng)建和管理方式下一些功夫艺栈。它必須能夠在數(shù)據(jù)創(chuàng)建之時(shí)保證其安全英岭,而且需要適配設(shè)備上鎖或未上鎖造成的文件可訪問(wèn)性的變化。

蘋(píng)果推送通知服務(wù)

從設(shè)計(jì)角度看湿右,讓?xiě)?yīng)用程序支持推送通知包含兩個(gè)部分诅妹。首先,iOS應(yīng)用程序需要請(qǐng)求系統(tǒng)向其發(fā)送通知毅人,然后要合理配置應(yīng)用程序委托使其可以對(duì)通知進(jìn)行恰當(dāng)處理吭狡。這些工作可以通過(guò)應(yīng)用程序委托以及UIApplication對(duì)象合作完成。第二丈莺,您需要提供一個(gè)服務(wù)器端進(jìn)程用于產(chǎn)生最初的通知划煮。該進(jìn)程運(yùn)行在您自己的本地服務(wù)器,它和蘋(píng)果推送通知服務(wù)協(xié)同工作以產(chǎn)生最初的通知缔俄。

本地通知

iOS 4.0引入了本地通知弛秋。本地通知是對(duì)已有推送通知的補(bǔ)充嘹朗,通用程序可以通過(guò)它在本地生成通知尉共,不再需要依賴外部服務(wù)器氯析。當(dāng)有重要的事件發(fā)生時(shí)哈打,后臺(tái)應(yīng)用程序可以利用本地通知獲得用戶關(guān)注。舉個(gè)例子挖炬,運(yùn)行于后臺(tái)的導(dǎo)航應(yīng)用程序可以使用本地通知提醒用戶要轉(zhuǎn)彎揽浙。應(yīng)用程序也可以安排在未來(lái)的某個(gè)時(shí)刻向用戶發(fā)送本地通知,而且發(fā)送這些通知并不要求應(yīng)用程序處于運(yùn)行狀態(tài)茅茂。

本地通知的優(yōu)點(diǎn)是它獨(dú)立于您的應(yīng)用程序捏萍。一旦某個(gè)通知被安排好后,系統(tǒng)會(huì)負(fù)責(zé)通知發(fā)送空闲。而且在發(fā)送通知的時(shí)候,您的應(yīng)用程序無(wú)需處于運(yùn)行狀態(tài)

手勢(shì)識(shí)別器

iOS 3.2引入了手勢(shì)識(shí)別器走敌。手勢(shì)識(shí)別器是一個(gè)綁定到視圖的對(duì)象碴倾,用于檢測(cè)常見(jiàn)的手勢(shì)類型。將手勢(shì)識(shí)別器綁定到視圖后掉丽,您可以告訴它某個(gè)手勢(shì)發(fā)生的時(shí)候執(zhí)行何種動(dòng)作跌榔。之后,手勢(shì)識(shí)別器就可以對(duì)原始事件進(jìn)行跟蹤捶障,根據(jù)系統(tǒng)定義的試探方式識(shí)別手勢(shì)僧须。在引入手勢(shì)識(shí)別器前,如果要識(shí)別一個(gè)手勢(shì)项炼,您需要跟蹤視圖的原始觸摸事件流担平,然后再使用復(fù)雜的試探方法來(lái)判斷這些事件是否表示某種手勢(shì)。

現(xiàn)在锭部,UIKit框架中包含一個(gè)UIGestureRecognizer類暂论,它定義了所有手勢(shì)識(shí)別器的基本行為。您可以使用自定義的手勢(shì)識(shí)別器子類或者系統(tǒng)定義的某個(gè)子類處理下面這些標(biāo)準(zhǔn)手勢(shì):

拍擊 (任意次數(shù)的拍擊)

向里或向外捏 (用于縮放)

搖動(dòng)或者拖拽

擦碰 (以任意方向)

旋轉(zhuǎn) (手指朝相反方向移動(dòng))

長(zhǎng)按

如需進(jìn)一步了解您可以使用的手勢(shì)識(shí)別器

文件共享支持

應(yīng)用程序可以使用文件共享讓用戶訪問(wèn)程序的用戶數(shù)據(jù)文件拌禾。文件共享允許應(yīng)用程序通過(guò)iTunes向用戶顯露應(yīng)用程序/Documents目錄的內(nèi)容取胎。這樣,用戶就可以在iPad和桌面計(jì)算機(jī)來(lái)回移動(dòng)文件湃窍。但是闻蛀,該功能不允許應(yīng)用程序和同一設(shè)備上的其他應(yīng)用程序共享文件。如果希望在程序間共享文件您市,請(qǐng)使用剪貼板或者文檔交互控制器對(duì)象觉痛。

您可以通過(guò)如下步驟來(lái)讓?xiě)?yīng)用程序支持文件共享:

在應(yīng)用程序的Info.plist文件中添加UIFileSharingEnabled鍵,并將鍵值設(shè)置為YES墨坚。

將您希望共享的文件放在應(yīng)用程序的Documents目錄秧饮。

一旦設(shè)備插入到用戶計(jì)算機(jī)映挂,iTunes 9.1就會(huì)在選中設(shè)備的Apps標(biāo)簽中顯示一個(gè)File Sharing區(qū)域。

此后盗尸,用戶就可以向該目錄添加文件或者將文件移動(dòng)到桌面計(jì)算機(jī)中柑船。

如果應(yīng)用程序支持文件共享,當(dāng)文件添加到Documents目錄后泼各,應(yīng)用程序應(yīng)該能夠識(shí)別并做出適當(dāng)響應(yīng)鞍时。例如說(shuō),應(yīng)用程序可以將新文件的內(nèi)容顯示界面上扣蜻。請(qǐng)不要向用戶展現(xiàn)目錄的文件列表并詢問(wèn)他們希望對(duì)文件執(zhí)行什么操作逆巍。

點(diǎn)對(duì)點(diǎn)服務(wù)

在iOS 3.0 及后續(xù)版本,Game Kit框架支持經(jīng)由藍(lán)牙進(jìn)行點(diǎn)對(duì)點(diǎn)連接莽使。您可以使用點(diǎn)對(duì)點(diǎn)連接啟動(dòng)與某個(gè)鄰近設(shè)備的通訊會(huì)話锐极,也可用它實(shí)現(xiàn)多種多玩家游戲的常見(jiàn)特性。雖然點(diǎn)對(duì)點(diǎn)連接主要應(yīng)用于游戲芳肌,但您也可將之應(yīng)用于其他類型應(yīng)用程序灵再。

標(biāo)準(zhǔn)系統(tǒng)視圖控制器

Cocoa Touch層許多框架含有展現(xiàn)標(biāo)準(zhǔn)系統(tǒng)界面的視圖控制器。我們提倡您在應(yīng)用程序中使用這些視圖控制器亿笤,這樣可以讓您的程序和系統(tǒng)具有一致的用戶體驗(yàn)翎迁。如果您需要執(zhí)行下述任務(wù),請(qǐng)從相應(yīng)的框架中選擇一個(gè)視圖控制器使用:

顯示或者編輯聯(lián)系人信息- 請(qǐng)使用Address Book UI框架中的視圖控制器净薛。

創(chuàng)建或者編輯日歷事件- 請(qǐng)使用Event Kit UI框架的視圖控制器汪榔。

創(chuàng)建email或者SMS消息- 請(qǐng)使用Message UI框架中的視圖控制器。

打開(kāi)或者預(yù)覽一份文件的內(nèi)容- 請(qǐng)使用UIKit框架中的UIDocumentInteractionController類肃拜。

從用戶的照片庫(kù)選取一張照片- 請(qǐng)使用UIKit框架中的UIImagePickerController類痴腌。

拍攝視頻片段- 請(qǐng)使用UIKit框架中的UIImagePickerController類。

如需了解如何選擇使用視圖控制器爆班,請(qǐng)查看iOS視圖控制器編程指南衷掷。如需了解特定視圖控制器所展現(xiàn)的界面,請(qǐng)查看相應(yīng)的框架參考柿菩。

外部設(shè)備支持

安裝iOS 3.2的設(shè)備可通過(guò)一組設(shè)備支持的線纜連接一個(gè)外部顯示設(shè)備戚嗅。當(dāng)外部設(shè)備連上后,應(yīng)用程序就可以使用其顯示屏顯示內(nèi)容枢舶。屏幕的信息懦胞,包括屏幕能夠支持的分辨率都可通過(guò)UIKit框架的接口獲取。您也可以通過(guò)該框架將應(yīng)用程序窗口關(guān)聯(lián)到某個(gè)屏幕凉泄。

UIScreen類用于獲取當(dāng)前所有屏幕(包括設(shè)備主屏幕)的屏幕對(duì)象躏尉。屏幕對(duì)象包含屏幕的屬性信息(包括將屏幕的尺寸和像素比例也考慮在內(nèi)的屏幕特征)。

您可以從UIScreenMode類獲得某個(gè)具有特定尺寸像素比例的屏幕的信息后众。

您可以將窗口(使用UIWindow類來(lái)表示)指定到某個(gè)特定的屏幕胀糜。如果您需要對(duì)內(nèi)容作鏡像顯示颅拦,則需要提供兩個(gè)獨(dú)立的窗口,然后再在其中顯示相同內(nèi)容教藻。

如需進(jìn)一步了解上述類可提供的支持距帅,請(qǐng)查看UIKit框架參考中相應(yīng)的類描述。

Cocoa Touch 層包含的框架

Address Book UI 框架

Event Kit UI 框架

Game Kit 框架

iAd 框架

Map Kit 框架

iOS 3.0導(dǎo)入了Map Kit框架 (MapKit.framework) 括堤,該框架供一個(gè)可被嵌入到應(yīng)用程序的地圖界面碌秸,該界面包含一個(gè)可以滾動(dòng)的地圖視圖。您可以在視圖中添加定制信息悄窃,并可將其嵌入到應(yīng)用程序視圖讥电,通過(guò)編程的方式設(shè)置地圖的各種屬性(包括當(dāng)前地圖顯示的區(qū)域以及用戶的方位)。您也可以使用定制標(biāo)注或標(biāo)準(zhǔn)標(biāo)注(例如使用測(cè)針標(biāo)記)突出顯示地圖中的某些區(qū)域或額外的信息轧抗。

在iOS 4.0系統(tǒng)中恩敌,該框架開(kāi)始支持可拖動(dòng)標(biāo)注以及定制覆蓋層⊙恢拢可拖動(dòng)標(biāo)注允許您通過(guò)編程方式或通過(guò)用戶交互方式重定位某個(gè)標(biāo)注的位置潮剪。覆蓋層可用于創(chuàng)建多個(gè)點(diǎn)組成的復(fù)雜地圖標(biāo)注。地圖表面諸如公交路線分唾、選舉地圖、公園邊界或者氣象信息(例如雷達(dá)數(shù)據(jù))等可以使用覆蓋層進(jìn)行顯示狮斗。

如需進(jìn)一步了解Map Kit框架中的類绽乔,請(qǐng)查看Map Kit 框架參考

Message UI 框架

UIKit 框架

媒體層

圖形技術(shù)

創(chuàng)建應(yīng)用程序最簡(jiǎn)單最有效的方法是使用事先渲染過(guò)的圖片碳褒,搭配上標(biāo)準(zhǔn)視圖以及UIKit框架的控件折砸,然后把繪制任務(wù)交給系統(tǒng)來(lái)執(zhí)行。但是在某些情況下沙峻,您可能需要一些UIKit所不具有的功能睦授,而且需要定制某些行為。在這種情況下摔寨,您可以使用下述技術(shù)管理應(yīng)用程序的圖形內(nèi)容:

Core Graphics (也被稱為Quartz)去枷,用于處理本地2D向量渲染和圖片渲染。

Core Animation ( Quartz Core框架的一部分)是复,為動(dòng)畫(huà)視圖和其他內(nèi)容提供更高級(jí)別支持删顶。

OpenGL ES,為使用硬件加速接口的2D和3D渲染提供支持淑廊。

Core Text逗余,提供一個(gè)精密的文本布局和渲染引擎。

Image I/O季惩,提供讀取及編寫(xiě)大多數(shù)圖形格式的接口录粱。

資產(chǎn)庫(kù)框架(Assets Library framework)腻格,可用于訪問(wèn)用戶照片庫(kù)中的照片和視頻。

大多數(shù)應(yīng)用程序應(yīng)該無(wú)需改動(dòng)啥繁,或者只需做很少修改菜职,便可運(yùn)行在具備高分辨率屏幕的設(shè)備。因?yàn)樵诶L圖或者操作視圖的時(shí)候输虱,您所指定的座標(biāo)值會(huì)被映射到邏輯座標(biāo)系統(tǒng)些楣,它和底層屏幕分辨率沒(méi)有關(guān)聯(lián)。而且繪制的內(nèi)容會(huì)自動(dòng)根據(jù)需要按比例縮放宪睹,以此來(lái)支持高分辨率屏幕愁茁。對(duì)基于向量進(jìn)行繪制的代碼來(lái)說(shuō),系統(tǒng)框架會(huì)自動(dòng)使用額外的像素來(lái)改善圖畫(huà)的內(nèi)容亭病,使其變得更清晰鹅很。如果應(yīng)用程序中使用了圖片,則可以利用UIKit自動(dòng)加載現(xiàn)有圖片的高分辨率版本罪帖。

音頻技術(shù)

請(qǐng)記住促煮,要盡可能地選取高級(jí)框架,因?yàn)樗鼈兛梢院?jiǎn)化播放音頻所需的工作整袁。下面列出的框架從高級(jí)到低級(jí)排列菠齿,,媒體播放器框架(Media Player framwork)提供的是最高級(jí)的接口:

媒體播放器框架坐昙。該框架可以讓訪問(wèn)用戶的iTume庫(kù)變得很容易绳匀,并且支持播放曲目和播放列表。

AV Foundation框架炸客。它提供一組簡(jiǎn)單易用的Objective-C接口疾棵,可用于管理音頻的播放或錄制。.

OpenAL框架痹仙。它提供一組跨平臺(tái)是尔,用于發(fā)布方位音頻的接口。

Core Audio框架开仰。它提供的接口簡(jiǎn)單而精密拟枚,可用于播放或錄制音頻內(nèi)容。您可以使用這些接口播放系統(tǒng)的警報(bào)聲音抖所、觸發(fā)備的震動(dòng)功能梨州、管理多聲道的緩沖和播放、對(duì)音頻內(nèi)容進(jìn)行流化處理田轧。

視頻技術(shù)

選擇視頻技術(shù)的時(shí)候暴匠,請(qǐng)盡可能選擇高級(jí)框架,因?yàn)楦呒?jí)框架可以簡(jiǎn)化為提供對(duì)某種功能的支持所需的工作傻粘。下面列出的框架由高級(jí)到低級(jí)排列每窖。其中帮掉,媒體播放器框架提供最高級(jí)的接口:

媒體播放器框架,它提供一組易于使用的接口窒典,可用于播放應(yīng)用程序中全屏或部分屏的電影蟆炊。

AV Foundation框架,它提供一組Objective-C接口瀑志,可以對(duì)電影的捕捉和播放進(jìn)行管理涩搓。

Core Media框架,它對(duì)較高級(jí)框架使用的底層類型進(jìn)行描述劈猪,同時(shí)也提供一些底層接口昧甘,它們用于對(duì)媒體進(jìn)行處理。

Core Services 層

Core Services層為所有的應(yīng)用程序提供基礎(chǔ)系統(tǒng)服務(wù)战得〕浔撸可能應(yīng)用程序并不直接使用這些服務(wù),但它們是系統(tǒng)很多部分賴以建構(gòu)的基礎(chǔ)常侦。

下面的部分描述一些比較常見(jiàn)特性浇冰,也許您正打算讓您的應(yīng)用程序支持這些特性。

塊對(duì)象

Grand Central Dispatch

應(yīng)用程序內(nèi)購(gòu)買(mǎi)(In App Purchase)

定位服務(wù)

SQLite

XML 支持

Core Foundation 框架

Core Foundation框架(CoreFoundation.framework) 是一組C語(yǔ)言接口聋亡,它們?yōu)閕OS應(yīng)用程序提供基本數(shù)據(jù)管理和服務(wù)功能肘习。下面列舉該框架支持進(jìn)行管理的數(shù)據(jù)以及可提供的服務(wù):

群體數(shù)據(jù)類型 (數(shù)組、集合等)

程序包

字符串管理

日期和時(shí)間管理

原始數(shù)據(jù)塊管理

偏好管理

URL及數(shù)據(jù)流操作

線程和RunLoop

端口和soket通訊

Core Foundation框架和Foundation框架緊密相關(guān)坡倔,它們?yōu)橄嗤δ芴峁┙涌诰幔獸oundation框架提供Objective-C接口。如果您將Foundation對(duì)象和Core Foundation類型摻雜使用致讥,則可利用兩個(gè)框架之間的 “toll-free bridging”。所謂的Toll-free bridging是說(shuō)您可以在某個(gè)框架的方法或函數(shù)同時(shí)使用Core Foundatio和Foundation 框架中的某些類型器赞。很多數(shù)據(jù)類型支持這一特性垢袱,其中包括群體和字符串?dāng)?shù)據(jù)類型。每個(gè)框架的類和類型描述都會(huì)對(duì)某個(gè)對(duì)象是否為 toll-free bridged港柜,應(yīng)和什么對(duì)象橋接進(jìn)行說(shuō)明请契。

Foundation 框架

Foundation框架(Foundation.framework)為 Core Foundation框架的許多功能提供Objective-C封裝。您可以參考Core Foundation框架了解前面對(duì)Core Foundation框架的描述夏醉。 Foundation框架為下述功能提供支持:

群體數(shù)據(jù)類型 (數(shù)組爽锥、集合等)

程序包

字符串管理

日期和時(shí)間管理

原始數(shù)據(jù)塊管理

偏好管理

URL及數(shù)據(jù)流操作

線程和RunLoop

Bonjour

通訊端口管理

國(guó)際化

正則表達(dá)式匹配

緩存支持

Core OS 層

Accelerate 框架

External Accessory 框架

Security 框架

System

iOS 的框架

設(shè)備中的框架

表B-1描述iOS設(shè)備提供的框架,它們位于/Platforms/iPhoneOS.platform/Developer/SDKs//System/Library/Frameworks目錄畔柔。路徑中的表示Xcode的安裝目錄氯夷,則表示目標(biāo)SDK版本。

模擬器的框架

設(shè)備和模擬器的框架稍有區(qū)別靶擦。模擬器將幾個(gè)Mac OS X框架作為其自身實(shí)現(xiàn)的一部分腮考。另外雇毫,由于系統(tǒng)的限制,設(shè)備框架的確切接口有可能和模擬器框架稍有不同踩蔚。

系統(tǒng)庫(kù)

請(qǐng)注意棚放,iOS系統(tǒng)可能沒(méi)有將Core OS和Core Services層某些特殊的庫(kù)打包成框架,而是將其作為動(dòng)態(tài)庫(kù)放在系統(tǒng)的/usr/lib目錄馅闽。動(dòng)態(tài)共享庫(kù)通過(guò).dylib擴(kuò)展名標(biāo)識(shí)飘蚯,其相應(yīng)的頭文件位于/usr/include目錄。

所有版本的iPhone SDK都包含一份安裝在系統(tǒng)的動(dòng)態(tài)共享庫(kù)本地副本福也。這些副本被安裝在您的開(kāi)發(fā)系統(tǒng)局骤,您可以從XCode工程進(jìn)行鏈接。如果您需要查看某個(gè)版本的動(dòng)態(tài)庫(kù)列表拟杉,請(qǐng)查看/Platforms/iPhoneOS.platform/Developer/SDKs//usr/lib庄涡。在這個(gè)路徑中,表示Xcode的安裝目錄搬设,表示您當(dāng)時(shí)正在使用某個(gè)版本的SDK穴店。

iOS使用符號(hào)鏈接來(lái)指向程序庫(kù)的最近版本。在鏈接某個(gè)動(dòng)態(tài)共享庫(kù)的時(shí)候拿穴,請(qǐng)使用符號(hào)鏈接而不要使用動(dòng)態(tài)庫(kù)特定版本鏈接泣洞。因?yàn)樵趯?lái)的iOS版本中,庫(kù)的版本可能會(huì)發(fā)生改變默色。如果您的軟件連接到某個(gè)特定的版本球凰,而那個(gè)版本可能已經(jīng)不存在于用戶的系統(tǒng)當(dāng)中,那就會(huì)出問(wèn)題腿宰。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末呕诉,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子吃度,更是在濱河造成了極大的恐慌甩挫,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件椿每,死亡現(xiàn)場(chǎng)離奇詭異伊者,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)间护,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)亦渗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人汁尺,你說(shuō)我怎么就攤上這事法精。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵亿虽,是天一觀的道長(zhǎng)菱涤。 經(jīng)常有香客問(wèn)我,道長(zhǎng)洛勉,這世上最難降的妖魔是什么粘秆? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮收毫,結(jié)果婚禮上攻走,老公的妹妹穿的比我還像新娘。我一直安慰自己此再,他們只是感情好昔搂,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著输拇,像睡著了一般摘符。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上策吠,一...
    開(kāi)封第一講書(shū)人閱讀 49,031評(píng)論 1 285
  • 那天逛裤,我揣著相機(jī)與錄音,去河邊找鬼猴抹。 笑死带族,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蟀给。 我是一名探鬼主播蝙砌,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼跋理!你這毒婦竟也來(lái)了择克?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤前普,失蹤者是張志新(化名)和其女友劉穎祠饺,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體汁政,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年缀旁,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了记劈。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡并巍,死狀恐怖目木,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤刽射,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布军拟,位于F島的核電站,受9級(jí)特大地震影響誓禁,放射性物質(zhì)發(fā)生泄漏懈息。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一摹恰、第九天 我趴在偏房一處隱蔽的房頂上張望辫继。 院中可真熱鬧,春花似錦俗慈、人聲如沸姑宽。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)炮车。三九已至,卻和暖如春酣溃,著一層夾襖步出監(jiān)牢的瞬間瘦穆,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工救拉, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留难审,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓亿絮,卻偏偏與公主長(zhǎng)得像告喊,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子派昧,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容