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