?
This document uses PHP Chinese website manual Release
Foundation類(lèi)層次的根是NSObject類(lèi),它(和NSObject及NSCopying協(xié)議一起)定義了基本的對(duì)象屬性和行為。Foundation框架的剩余部分由幾組相互關(guān)聯(lián)的類(lèi)和一些獨(dú)立的類(lèi)組成。有一些代表基本數(shù)據(jù)類(lèi)型的類(lèi),如字符串、字節(jié)數(shù)組、用于存儲(chǔ)其它對(duì)象的集合類(lèi);一些代表系統(tǒng)信息的類(lèi),如日期類(lèi);還有一些代表系統(tǒng)實(shí)體的類(lèi),比如端口、線程、和進(jìn)程。圖1、圖2、和圖3所示的類(lèi)層次描述了這些類(lèi)的邏輯分組及其繼承關(guān)系。
層次
Foundation類(lèi)層次的根是NSObject類(lèi),它(和NSObject及NSCopying協(xié)議一起)定義了基本的對(duì)象屬性和行為。
Foundation框架的剩余部分由幾組相互關(guān)聯(lián)的類(lèi)和一些獨(dú)立的類(lèi)組成。有一些代表基本數(shù)據(jù)類(lèi)型的類(lèi),如字符串、字節(jié)數(shù)組、用于存儲(chǔ)其它對(duì)象的集合類(lèi);一些代表系統(tǒng)信息的類(lèi),如日期類(lèi);還有一些代表系統(tǒng)實(shí)體的類(lèi),比如端口、線程、和進(jìn)程。圖1、圖2、和圖3所示的類(lèi)層次描述了這些類(lèi)的邏輯分組及其繼承關(guān)系。
Founddation第一部分
Foundation類(lèi)層次Foundation Continued
Founddation第二部分
Nsproty
Founddation第三部分
上面這些框圖按照如下范疇(和下文提到的其它關(guān)聯(lián)關(guān)系)將Foundation框架中的類(lèi)進(jìn)行邏輯分類(lèi):
值對(duì)象。值對(duì)象封裝了各種類(lèi)型的數(shù)據(jù),提供對(duì)數(shù)據(jù)進(jìn)行訪問(wèn)和各種操作的途徑。因?yàn)樗鼈兌际菍?duì)象,所以可以對(duì)它們(和它們包含的數(shù)值)進(jìn)行歸檔和分發(fā)。NSData類(lèi)為字節(jié)流提供面向?qū)ο蟮拇鎯?chǔ)空間,而NSValue和NSNumber類(lèi)則為簡(jiǎn)單的標(biāo)量值數(shù)組提供面向?qū)ο蟮拇鎯?chǔ)空間。NSDate、NSCalendarDate、NSTimeZone、NSCalendar、NSDateComponents、和NSLocale類(lèi)提供代表時(shí)間、日期、日歷、和地域設(shè)置(locales)的對(duì)象。它們包含的方法可以用于計(jì)算日期和時(shí)間差、以各種格式顯示日期和時(shí)間、以及調(diào)整世界上各個(gè)位置時(shí)間和日期。
字符串。NSString是另一類(lèi)值對(duì)象,負(fù)責(zé)為以null結(jié)尾的、具有特定編碼的字節(jié)數(shù)組提供面向?qū)ο蟮拇鎯?chǔ)空間。它支持對(duì)UTF-16、UTF-8、MacRoman、和很多其它編碼的字符串之間進(jìn)行轉(zhuǎn)換。NSString還提供對(duì)字符串進(jìn)行檢索、組合、和比較、以及對(duì)文件系統(tǒng)路徑進(jìn)行操作的方法。您可以用NSScanner對(duì)象來(lái)對(duì)NSString對(duì)象中的數(shù)字和詞進(jìn)行解析。NSCharacterSet(顯示在框圖中的集合類(lèi)部分)代表可以在各個(gè)NSString和NSScanner方法中使用的一組字符。
集合。集合是以一定的順序存儲(chǔ)和訪問(wèn)其它對(duì)象(通常是數(shù)值)的對(duì)象。NSArray的索引從0開(kāi)始,NSDictionary使用鍵-值對(duì),而NSSet則負(fù)責(zé)對(duì)象的隨機(jī)存儲(chǔ)(NSCountedSet類(lèi)使集合具有唯一標(biāo)識(shí))。通過(guò)NSEnumerator對(duì)象,您可以訪問(wèn)一個(gè)集合中的元素序列。集合對(duì)象是屬性列表的必要元素,和其它所有對(duì)象一樣,它也可以被歸檔和分發(fā)。
操作系統(tǒng)服務(wù)。 很多Foundation類(lèi)為訪問(wèn)各種底層的操作系統(tǒng)服務(wù)提供便利,同時(shí)又把開(kāi)發(fā)者從操作系統(tǒng)的具體特性隔離開(kāi)來(lái)。舉例來(lái)說(shuō),您可以通過(guò)NSProcessInfo類(lèi)查詢(xún)應(yīng)用程序運(yùn)行的環(huán)境;通過(guò)NSHost類(lèi)得到主機(jī)系統(tǒng)在網(wǎng)絡(luò)中的名稱(chēng)和地址;通過(guò)NSTimer對(duì)象,您可以按指定的時(shí)間間隔向其它對(duì)象發(fā)送消息;NSRunLoop可以幫您管理應(yīng)用程序或其它類(lèi)型程序的輸入源;而NSUserDefaults則為存儲(chǔ)全局(主機(jī)級(jí)別)和用戶(hù)級(jí)缺省值(預(yù)置)的系統(tǒng)數(shù)據(jù)庫(kù)提供編程接口。
文件系統(tǒng)和URL。 NSFileManager為諸如創(chuàng)建、重命名、刪除、和移動(dòng)文件這樣的文件操作提供統(tǒng)一的接口。NSFileHandle則可以進(jìn)行較為底層的文件操作(比如文件內(nèi)查找操作)。NSBundle可以尋找存儲(chǔ)在程序包中的資源,可以動(dòng)態(tài)裝載某些資源(比如nib文件和代碼)。您可以用NSURL和NSURLHandle類(lèi)來(lái)表示、訪問(wèn)、和管理源于URL的數(shù)據(jù)。
進(jìn)程間通訊。 這個(gè)范疇中的大部分類(lèi)代表不同的系統(tǒng)端口、套接字、和名字服務(wù)器,對(duì)實(shí)現(xiàn)底層的IPC很有用。NSPipe代表一個(gè)BSD管道,即一種進(jìn)程間的單向通訊通道。
線程和子任務(wù)。 NSThread類(lèi)使您可以創(chuàng)建多線程的程序,而各種鎖(lock)類(lèi)則為彼此競(jìng)爭(zhēng)的線程在訪問(wèn)進(jìn)程資源時(shí)提供各種控制機(jī)制。通過(guò)NSTask,您的程序可以分出一個(gè)子進(jìn)程來(lái)執(zhí)行其它工作或進(jìn)行進(jìn)度監(jiān)控。
歸檔和序列化。這個(gè)范疇中的類(lèi)使對(duì)象分發(fā)和持久保留成為可能。NSCoder及其子類(lèi)和NSCoding協(xié)議一起,可以以獨(dú)立于架構(gòu)的方式來(lái)表示對(duì)象中包含的數(shù)據(jù),可以將類(lèi)信息和數(shù)據(jù)一起存儲(chǔ)。
表達(dá)式和條件判斷。條件判斷類(lèi),即NSPredicate、NSCompoundPredicate、和NSComparisonPredicate類(lèi),負(fù)責(zé)對(duì)獲取或過(guò)濾對(duì)象的邏輯約束條件進(jìn)行封裝。NSExpression對(duì)象則代表?xiàng)l件判斷中的表達(dá)式。
Spotlight查詢(xún)。NSMetadataItem、NSMetadataQuery和相關(guān)的查詢(xún)類(lèi)對(duì)文件系統(tǒng)的元數(shù)據(jù)進(jìn)行封裝,使元數(shù)據(jù)的查詢(xún)成為可能。
Objective-C語(yǔ)言服務(wù)。NSException和NSAssertionHandler類(lèi)為代碼中的斷言和例外處理提供了面向?qū)ο蟮姆庋b。NSInvocation對(duì)象是Objective-C消息的靜態(tài)表示,您的程序可以對(duì)它存儲(chǔ),并在之后用于激活另一個(gè)對(duì)象的消息。undo管理器(NSUndoManager)和分布式對(duì)象(Distributed Objects)系統(tǒng)都用到了這種對(duì)象。NSMethodSignature對(duì)象負(fù)責(zé)記錄方法的類(lèi)型信息,可以用于信息的推送。NSClassDescription則是一個(gè)抽象類(lèi),用于定義和查詢(xún)類(lèi)的關(guān)系和屬性。
腳本。這個(gè)范疇中的類(lèi)可以幫助您實(shí)現(xiàn)對(duì)AppleScript腳本和Apple Event命令的支持。
分布式對(duì)象。 您可以通過(guò)分布式對(duì)象類(lèi)來(lái)進(jìn)行同一臺(tái)電腦或一個(gè)網(wǎng)絡(luò)中的不同電腦上的進(jìn)程間通訊。其中的兩個(gè)類(lèi)-NSDistantObject和NSProtocolChecker的根類(lèi)(NSProxy)和Cocoa其它部分的根類(lèi)不同。
網(wǎng)絡(luò)。NSNetService和NSNetServiceBrowser類(lèi)支持稱(chēng)為Bonjour的零配置網(wǎng)絡(luò)架構(gòu)。Bonjour是在IP網(wǎng)絡(luò)上發(fā)布和瀏覽服務(wù)的強(qiáng)大系統(tǒng)。