一、常用Foundation框架里的類總覽
? ? ? Foundation類層次的根是NSObject,它(和NSObject及NSCopying協(xié)議一起)定義了基本的對象屬性和行為丛晌。
值對象:值對象封裝了各種類型的數(shù)據(jù),提供對各種數(shù)據(jù)訪問和操作的路徑。NSData為字節(jié)流提供面向?qū)ο蟮拇鎯臻g,NSValue和NSNumber則為簡單的標(biāo)量值數(shù)組提供面向?qū)ο蟮拇鎯臻g做祝,NSDate、NSCalendarDate鸡岗、NStimeZone混槐、NSCalendarNSDateComponents和NSLocale類代表時間、日期轩性、日歷和地域設(shè)置的對象
字符串:NSString是另一類值對象声登,負(fù)責(zé)以null為結(jié)尾的、具有特定編碼的字節(jié)數(shù)組提供面向?qū)ο蟮拇鎯臻g揣苏。NSString還提供對字符串進(jìn)行檢索悯嗓、組合和比較、以及對文件路徑進(jìn)行操作的方法卸察「可以使用NSScanner對象來對NSString對象中的數(shù)字和詞進(jìn)行解析。NSCharacterSet代表可以在哥哥NSString和NSScanner中使用的統(tǒng)一的一組字符蛾派。
集合:集合是以一定順序存儲和訪問其它對象的對象俄认。NSArray的索引從0開始个少,NSDictionary使用鍵值對洪乍,NSSet則是復(fù)則對象的隨機(jī)存儲(NSCountedSet類使集合具有唯一標(biāo)識)。
操作系統(tǒng)服務(wù):NSProcessInfo類查詢應(yīng)用程序的運(yùn)行環(huán)境夜焦;NSHost可以得到主機(jī)系統(tǒng)在網(wǎng)絡(luò)中的名稱和地址壳澳;通過NSTimer對象,可以按指定的時間間隔向其它對象發(fā)送消息茫经;NSRunLoop可以管理應(yīng)用程序和其它類型程序的輸入源巷波;NSUserDefaults則為存儲全局和用戶缺省值的系統(tǒng)數(shù)據(jù)庫提供編程接口
文件系統(tǒng)和URL:NSFileManager提供文件操作;NSFileHandle則可以進(jìn)行較為底層的文件操作卸伞;NSBundle用來查找程序包中的資源抹镊;用NSURL和NSURLHandle來表示、訪問和管理源于URL的數(shù)據(jù)荤傲。
線程和子任務(wù):NSThread(現(xiàn)在可能已經(jīng)過時了吧垮耳,不是很確定,留待后面解決,今天只看大綱)
通知:略(打算后面想寫)
歸檔和序列化:NSCoder及其子類和NSCoding協(xié)議一起终佛,可以以獨(dú)立于架構(gòu)的方式來表示對象中包含的數(shù)據(jù)俊嗽,將類信息和數(shù)據(jù)一起存儲。
表達(dá)式和條件判斷:NSPredicate铃彰、NSCompoundPredicate和NScomparisonPredicate類绍豁,負(fù)責(zé)對獲取或過濾對象的邏輯約束條件進(jìn)行封裝。NSExpression對象則代表?xiàng)l件判斷中的表達(dá)式
Spolight查詢:NSMetadataItem牙捉、NSMetadataQuery和相關(guān)查詢類對文件系統(tǒng)的元數(shù)據(jù)進(jìn)行封裝竹揍,使元數(shù)據(jù)的查詢成為可能
二、常用Application Kit框架
? ? ? ?Application Kit 由超過125個類和協(xié)議組成邪铲。所有的類最終都是從Foundation框架的NSObject類繼承而來鬼佣。
? ? ? ?Application Kit 中最大的分支的根是NSResponder類,負(fù)責(zé)定義響應(yīng)者鏈霜浴,即對用戶事件響應(yīng)的有序?qū)ο罅斜砭е浴SApplication、NSWindow阴孟、NSView都是繼承自NSResponder類
? ? ? ?第二大分支是繼承事NSCell類晌纫,這組類和NSControl類(它繼承自NSView)的派生類有大體上的映像關(guān)系。對于負(fù)責(zé)響應(yīng)用戶動作的用戶界面對象永丝,Application Kit 采用的架構(gòu)將它們的工作氛圍控件(control)對象和單元(cell)對象锹漱。大多數(shù)的控件對象和一個或多個單元對象相關(guān)聯(lián),單元對象負(fù)責(zé)實(shí)現(xiàn)描畫細(xì)節(jié)和事件的處理慕嚷「珉梗控件和單元的實(shí)現(xiàn)機(jī)制基于Application Kit的一個重要設(shè)計模式:目標(biāo)-動作(target-action)機(jī)制。單元對象可以保留用戶點(diǎn)擊(或在單元上進(jìn)行某種動作)時應(yīng)該發(fā)送給特定對象的消息標(biāo)識信息喝检。當(dāng)用戶操作一個控件時嗅辣,控件就從它的單元對象抽取必要信息,并向目標(biāo)對象發(fā)送動作消息挠说。目標(biāo)-動作機(jī)制是您可以指定目標(biāo)對象及應(yīng)該調(diào)用的方法澡谭,從而賦予用戶動作某種意義。
Application Kit中另一個基于設(shè)計模式的機(jī)制時委托機(jī)制损俭。用戶界面上的很多對象蛙奖,比如文本框、表視圖等杆兵,都定義了委托雁仲。委托對象代表被委托對象進(jìn)行各種動作或者與之互相協(xié)作。
三琐脏、通用的用戶界面類總覽
全局應(yīng)用程序?qū)ο螅?/b>每個應(yīng)用程序都使用一個NSApplication類的單例來控制主事件循環(huán)攒砖、跟蹤應(yīng)用程序的窗口和菜單、將事件分發(fā)給合適的對象,建立高級別的自動釋放池祭衩、以及接受應(yīng)用程序級別的事件通告灶体。NSApplication對象有一個委托對象,在應(yīng)用程序啟動或終止掐暮、被隱藏或被激活蝎抽、即將打開用戶選擇的文件等時候,委托對象會得到通知路克。通過設(shè)置改為他的代理對象并實(shí)現(xiàn)相應(yīng)的委托方法樟结,就可以定制應(yīng)用程序的行為。
窗口和視圖:NSWindow和NSView精算,都是繼承自NSResponder類瓢宦,可以對用戶動作進(jìn)行響應(yīng),NSApplication中維護(hù)著一個NSWindow的對象列表--應(yīng)用程序的每個窗口都有一個對應(yīng)的對象灰羽,而每個NSWindow對象都維護(hù)一些具有一定層次結(jié)構(gòu)的NSView對象驮履。視圖層次用于窗口內(nèi)部的描畫和事件處理。NSWindow對象負(fù)責(zé)處理窗口級別的事件廉嚼,將其他事件分發(fā)給窗口中的NSView視圖對象玫镐,并對視圖對象提供一個描畫區(qū)域,NSWindow對象也有一個委托怠噪,用于定制窗口的行為恐似。
? ? ? NSView是現(xiàn)實(shí)在窗口中所有對象的超類。所有的NSView都需要借助圖形函數(shù)來實(shí)現(xiàn)自己的描繪方法傍念;drawRect:是一個基本方法矫夷,在創(chuàng)建新的NSView時,需要重載這個方法憋槐。
Cocoa綁定的控制器類双藕。NSController是一個抽象類,它的具體子類有NSObjectController秦陋、NSArrayController和NSTreeController蔓彩,它們是Cocoa綁定實(shí)現(xiàn)的一部分治笨。這個技術(shù)可以自動同步存儲在對象中的應(yīng)用程序數(shù)據(jù)和該數(shù)據(jù)在用戶界面上的表現(xiàn)驳概。
面板(對話框):NSPanel是NSWindow的子類,用于顯示一些短暫的旷赖、全局的顺又、或緊急的信息。比如等孵,您可以使用一個NSPanel的實(shí)例(而不是NSWindow)來顯示錯誤信息稚照,或請求用戶對特殊或不正常的情況進(jìn)行響應(yīng)。Application為您提供一些常用的對話框,比如Save果录、Open和Print對話框上枕,用于程序的公共操作油吭。
菜單和光標(biāo):NSMenu创橄、NSMenuItem 和 NSCursor類負(fù)責(zé)定義應(yīng)用程序顯示給用戶的菜單和光標(biāo)的行為、外觀湘纵。
分組和滾動視圖:NSBox返弹、NSScrollView 和 NSSplitView類用于為窗口中的視圖集合或其他視圖對象提供圖形“附件”锈玉,您可以通過NSBox類將窗口中的元素進(jìn)行分組,并為整組元素描畫一個邊界义起。NSSplitView可以在垂直或者水平方向加一些視圖拉背,并為每個視圖分配一定的公共區(qū)域,用戶可以通過滑動控制條來重新飛配視圖的區(qū)域默终。NSCrollView類及其輔助類椅棺,NSClipView,為用戶提供一個滾動機(jī)制齐蔽,以及讓用戶初始化和控制滾動動圖形對象土陪。NSRulerView類則可以為一個滾動動視圖添加標(biāo)尺和標(biāo)志。
表示圖和大綱視圖:NSTableView以行列的方式顯示數(shù)據(jù)肴熏。NSTableView可以很好地(但不僅限于)用于顯示數(shù)據(jù)庫記錄鬼雀。NSOutlineView(NSTableView的子類)提供了另外一種顯示表格數(shù)據(jù)的方法。通過NSBrower類蛙吏,可以創(chuàng)建一個顯示和漫游層次數(shù)據(jù)的對象源哩。
四、文字和字體
NSTextFeild:可編輯輸入框
NSTextView:重量級文本輸入框鸦做。支持富文本励烦,添加文件,輸入管理和按鍵綁定泼诱、以及標(biāo)識文本屬性坛掠,可以和Font窗口及Font菜單、標(biāo)尺及段落風(fēng)格治筒、Serivces工具屉栓、還有剪切板等組建協(xié)作。
? ? ? 通過NSTextStorage耸袜、NSLayoutManager友多、NSTextContainer和其它相關(guān)的類,還可以實(shí)現(xiàn)更強(qiáng)大的文本操作堤框。
NSFont和NSFontManager類用于封裝和管理字體域滥。