一、常用Foundation框架里的類總覽
? ? ? Foundation類層次的根是NSObject,它(和NSObject及NSCopying協議一起)定義了基本的對象屬性和行為。
值對象:值對象封裝了各種類型的數據,提供對各種數據訪問和操作的路徑。NSData為字節流提供面向對象的存儲空間,NSValue和NSNumber則為簡單的標量值數組提供面向對象的存儲空間,NSDate、NSCalendarDate、NStimeZone、NSCalendarNSDateComponents和NSLocale類代表時間、日期、日歷和地域設置的對象
字符串:NSString是另一類值對象,負責以null為結尾的、具有特定編碼的字節數組提供面向對象的存儲空間。NSString還提供對字符串進行檢索、組合和比較、以及對文件路徑進行操作的方法。可以使用NSScanner對象來對NSString對象中的數字和詞進行解析。NSCharacterSet代表可以在哥哥NSString和NSScanner中使用的統一的一組字符。
集合:集合是以一定順序存儲和訪問其它對象的對象。NSArray的索引從0開始,NSDictionary使用鍵值對,NSSet則是復則對象的隨機存儲(NSCountedSet類使集合具有唯一標識)。
操作系統服務:NSProcessInfo類查詢應用程序的運行環境;NSHost可以得到主機系統在網絡中的名稱和地址;通過NSTimer對象,可以按指定的時間間隔向其它對象發送消息;NSRunLoop可以管理應用程序和其它類型程序的輸入源;NSUserDefaults則為存儲全局和用戶缺省值的系統數據庫提供編程接口
文件系統和URL:NSFileManager提供文件操作;NSFileHandle則可以進行較為底層的文件操作;NSBundle用來查找程序包中的資源;用NSURL和NSURLHandle來表示、訪問和管理源于URL的數據。
線程和子任務:NSThread(現在可能已經過時了吧,不是很確定,留待后面解決,今天只看大綱)
通知:略(打算后面想寫)
歸檔和序列化:NSCoder及其子類和NSCoding協議一起,可以以獨立于架構的方式來表示對象中包含的數據,將類信息和數據一起存儲。
表達式和條件判斷:NSPredicate、NSCompoundPredicate和NScomparisonPredicate類,負責對獲取或過濾對象的邏輯約束條件進行封裝。NSExpression對象則代表條件判斷中的表達式
Spolight查詢:NSMetadataItem、NSMetadataQuery和相關查詢類對文件系統的元數據進行封裝,使元數據的查詢成為可能
二、常用Application Kit框架
? ? ? ?Application Kit 由超過125個類和協議組成。所有的類最終都是從Foundation框架的NSObject類繼承而來。
? ? ? ?Application Kit 中最大的分支的根是NSResponder類,負責定義響應者鏈,即對用戶事件響應的有序對象列表。NSApplication、NSWindow、NSView都是繼承自NSResponder類
? ? ? ?第二大分支是繼承事NSCell類,這組類和NSControl類(它繼承自NSView)的派生類有大體上的映像關系。對于負責響應用戶動作的用戶界面對象,Application Kit 采用的架構將它們的工作氛圍控件(control)對象和單元(cell)對象。大多數的控件對象和一個或多個單元對象相關聯,單元對象負責實現描畫細節和事件的處理??丶蛦卧膶崿F機制基于Application Kit的一個重要設計模式:目標-動作(target-action)機制。單元對象可以保留用戶點擊(或在單元上進行某種動作)時應該發送給特定對象的消息標識信息。當用戶操作一個控件時,控件就從它的單元對象抽取必要信息,并向目標對象發送動作消息。目標-動作機制是您可以指定目標對象及應該調用的方法,從而賦予用戶動作某種意義。
Application Kit中另一個基于設計模式的機制時委托機制。用戶界面上的很多對象,比如文本框、表視圖等,都定義了委托。委托對象代表被委托對象進行各種動作或者與之互相協作。
三、通用的用戶界面類總覽
全局應用程序對象:每個應用程序都使用一個NSApplication類的單例來控制主事件循環、跟蹤應用程序的窗口和菜單、將事件分發給合適的對象,建立高級別的自動釋放池、以及接受應用程序級別的事件通告。NSApplication對象有一個委托對象,在應用程序啟動或終止、被隱藏或被激活、即將打開用戶選擇的文件等時候,委托對象會得到通知。通過設置改為他的代理對象并實現相應的委托方法,就可以定制應用程序的行為。
窗口和視圖:NSWindow和NSView,都是繼承自NSResponder類,可以對用戶動作進行響應,NSApplication中維護著一個NSWindow的對象列表--應用程序的每個窗口都有一個對應的對象,而每個NSWindow對象都維護一些具有一定層次結構的NSView對象。視圖層次用于窗口內部的描畫和事件處理。NSWindow對象負責處理窗口級別的事件,將其他事件分發給窗口中的NSView視圖對象,并對視圖對象提供一個描畫區域,NSWindow對象也有一個委托,用于定制窗口的行為。
? ? ? NSView是現實在窗口中所有對象的超類。所有的NSView都需要借助圖形函數來實現自己的描繪方法;drawRect:是一個基本方法,在創建新的NSView時,需要重載這個方法。
Cocoa綁定的控制器類。NSController是一個抽象類,它的具體子類有NSObjectController、NSArrayController和NSTreeController,它們是Cocoa綁定實現的一部分。這個技術可以自動同步存儲在對象中的應用程序數據和該數據在用戶界面上的表現。
面板(對話框):NSPanel是NSWindow的子類,用于顯示一些短暫的、全局的、或緊急的信息。比如,您可以使用一個NSPanel的實例(而不是NSWindow)來顯示錯誤信息,或請求用戶對特殊或不正常的情況進行響應。Application為您提供一些常用的對話框,比如Save、Open和Print對話框,用于程序的公共操作。
菜單和光標:NSMenu、NSMenuItem 和 NSCursor類負責定義應用程序顯示給用戶的菜單和光標的行為、外觀。
分組和滾動視圖:NSBox、NSScrollView 和 NSSplitView類用于為窗口中的視圖集合或其他視圖對象提供圖形“附件”,您可以通過NSBox類將窗口中的元素進行分組,并為整組元素描畫一個邊界。NSSplitView可以在垂直或者水平方向加一些視圖,并為每個視圖分配一定的公共區域,用戶可以通過滑動控制條來重新飛配視圖的區域。NSCrollView類及其輔助類,NSClipView,為用戶提供一個滾動機制,以及讓用戶初始化和控制滾動動圖形對象。NSRulerView類則可以為一個滾動動視圖添加標尺和標志。
表示圖和大綱視圖:NSTableView以行列的方式顯示數據。NSTableView可以很好地(但不僅限于)用于顯示數據庫記錄。NSOutlineView(NSTableView的子類)提供了另外一種顯示表格數據的方法。通過NSBrower類,可以創建一個顯示和漫游層次數據的對象。
四、文字和字體
NSTextFeild:可編輯輸入框
NSTextView:重量級文本輸入框。支持富文本,添加文件,輸入管理和按鍵綁定、以及標識文本屬性,可以和Font窗口及Font菜單、標尺及段落風格、Serivces工具、還有剪切板等組建協作。
? ? ? 通過NSTextStorage、NSLayoutManager、NSTextContainer和其它相關的類,還可以實現更強大的文本操作。
NSFont和NSFontManager類用于封裝和管理字體。