成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

蘋果官方指南:Cocoa框架

移動開發 iOS
Mac OS X包含多個Cocoa框架,蘋果和第三方廠商也隨時會發布更多的框架。無論Cocoa框架有多么豐富,有兩個框架總是與眾不同:即Foundation和Application Kit框架,它們是核心的Cocoa框架。

是什么因素使一個程序成為Cocoa程序呢?肯定不是編程語言,因為在Cocoa開發中您可以使用各種語言;也不是開發工具,因為您在命令行上就可以創建Cocoa程序(雖然那會使開發過程變得復雜,且需要消耗大量時間)。那么,所有Cocoa程序的共同點是什么?是什么使它們變得與眾不同?答案是這些程序都是由一些對象組成,而這些對象最終都是從NSObject這個根類繼承下來的;還有,這些程序都是基于Objective-C運行環境的。這個說法對于所有的Cocoa框架來說也是正確的。

請注意:上面的說法還需要做一點限制。首先,Cocoa還有另一個根類,即NSProxy。只是NSProxy很少用于Cocoa編程。其次,您可以創建您自己的根類,只是這需要很多工作(包括編寫與Objective-C運行環境進行交互的代碼),而且為此花費時間可能是不值得的。

Mac OS X包含多個Cocoa框架,蘋果和第三方廠商也隨時會發布更多的框架。無論Cocoa框架有多么豐富,有兩個框架總是與眾不同:即Foundation和Application Kit框架,它們是核心的Cocoa框架。如果您沒有連接并使用Application Kit框架中的類,就不能開發任何類型的Cocoa軟件;同樣地,如果您沒有連接并使用Foundation框架中的類,也不能開發任何類型的Cocoa軟件(當您連接Cocoa雨傘框架的時候,Xcode會自動連接這些框架)。Foundation和Application Kit框架在Cocoa開發中是必要的,其它框架則是輔助和可選的。

下面的部分將討論上述兩個核心的Cocoa框架,并簡要描述一些輔助性的框架。為了使這些大框架更加容易理解,在介紹Foundation和Application Kit框架時,我們將每個層次中的數十個類分為不同的功能組。雖然這種分組方式有很強的邏輯基礎,但是人們也可以按其它方式合理地進行分組。

Foundation

Foundation框架定義了一些基礎類,可以用于各種類型的Cocoa程序。Foundation框架和Application Kit框架的區分標準在于用戶界面。如果一個對象既不出現在用戶界面上,也不是專門用于支持用戶界面,那么它就屬于Foundation框架。您可以僅用Foundation框架創建一個Cocoa程序,而不涉及其它框架;命令行工具和Internet服務器就是這樣的例子。

蘋果公司在設計Foundation框架時牢記如下目標:

為諸如內存管理、對象改變、和通告這樣的事物定義基本的對象行為和引入一致的規則。

通過程序包技術和Unicode字符串(和其它技術一起)支持國際化和本地化。

支持對象的持久保存。

支持對象的分發。

在一定程度上獨立于操作系統,以支持移植。

為編程的元類型提供對象封裝或等價物,比如數值、字符串、和集合,以及為訪問底層系統實體和服務提供工具類,比如端口、線程、和文件系統。

Cocoa應用程序定義為需要連接Application Kit框架,同時也總是必須連接Foundation框架的程序。這兩個類層次都共用同一個根類,即NSObject類,很多(如果不是絕大多數的話)Application Kit的方法和函數都將Foundation對象作為參數或返回值。一些Foundation類可能看起來像是為應用程序設計的,NSUndoManager和NSUserDefaults類就是其中的兩個例子,但是由于它們沒有涉及到用戶界面,所以被包含在Foundation框架中。

Foundation的范式和策略

Foundation為Cocoa編程引入了幾個范式和策略,以保證程序中的對象在特定的環境下具有一致的行為和期望。包括:

對象的所有權和對象的清除。Foundation建立了一個對象所有權策略,用以代替垃圾收集機制。該策略指定對象需要釋放自己創建、拷貝、或顯式保留的其它對象。NSObject(類和協議)定義了保留和釋放對象的方法。自動釋放池(在NSAutoreleasePool類中定義)實現了一種遲緩釋放(delayed-release)機制,使Cocoa程序在處理不由調用者負責的返回對象上有一個一致的規則。

可變類的變體。在Foundation中,很多值和容器類的不可變類都有一個可以修改的變體,可變類總是不可變類的子類。如果您需要動態地改變一個經過封裝的值,或者改變這種對象的所屬關系,可以創建一個可變類的實例。由于它是從相應的不可變類繼承下來的,所以您可以在接受不可變類型參數的方法中傳入可變類的實例。對象可變性的更多信息請參見"對象的可變性"部分。

類簇。類簇是一個抽象類及一組私有的具體子類的組合,抽象類是這些子類的雨傘接口。根據不同的上下文(特別是創建對象所用的方法),類簇可以為您返回恰當的、經過優化的類實例。舉例來說,NSString和NSMutableString就是針對不同的存儲需要進行優化的各種私有子類實例的經紀類。多年來,具體類進行了幾次修改,但應用程序依然可以工作。類簇的更多信息請參見"類簇"部分。

通告。通告是Cocoa的主要設計模式。它基于廣播機制,該機制使一個對象(稱為觀察者)可以在另一個對象進行某種任務或遇到某種情況時,以用戶或系統事件的方式得到通告。產生通告的對象可能并不知道通告觀察者的存在或身份。有幾種類型的通告:同步、異步、和分布式通告。Foundation的通告機制由NSNotification、NSNotificationCenter、NSNotificationQueue、和NSDistributedNotificationCenter類實現的。更多關于通告的信息請參見"通告"部分。

Foundation類

Foundation類層次的根是NSObject類,它(和NSObject及NSCopying協議一起)定義了基本的對象屬性和行為。更多有關NSObject和基本對象行為的信息請參見"根類"部分。

Foundation框架的剩余部分由幾組相互關聯的類和一些獨立的類組成。有一些代表基本數據類型的類,如字符串、字節數組、用于存儲其它對象的集合類;一些代表系統信息的類,如日期類;還有一些代表系統實體的類,比如端口、線程、和進程。下圖所示的類層次描述了這些類的邏輯分組及其繼承關系。

下圖為Foundation類層次—Objective-C(第一部分)

The Foundation class hierarchy?Objective-C (part one)

下圖為Foundation類層次—Objective-C(第二部分)

Foundation class hierarchy?Objective-C (part two)

下圖為Foundation類層次—Objective-C(第三部分)

Foundation class hierarchy?Objective-C (part three)

上面這些框圖按照如下范疇(和下文提到的其它關聯關系)將Foundation框架中的類進行邏輯分類:

值對象。值對象封裝了各種類型的數據,提供對數據進行訪問和各種操作的途徑。因為它們都是對象,所以可以對它們(和它們包含的數值)進行歸檔和分發。NSData類為字節流提供面向對象的存儲空間,而NSValue和NSNumber類則為簡單的標量值數組提供面向對象的存儲空間。NSDate、NSCalendarDate、NSTimeZone、NSCalendar、NSDateComponents、和 NSLocale類提供代表時間、日期、日歷、和地域設置(locales)的對象。它們包含的方法可以用于計算日期和時間差、以各種格式顯示日期和時間、以及調整世界上各個位置時間和日期。

字符串。NSString是另一類值對象,負責為以null結尾的、具有特定編碼的字節數組提供面向對象的存儲空間。它支持對UTF-16、UTF-8、MacRoman、和很多其它編碼的字符串之間進行轉換。NSString還提供對字符串進行檢索、組合、和比較、以及對文件系統路徑進行操作的方法。您可以用NSScanner對象來對NSString對象中的數字和詞進行解析。NSCharacterSet(顯示在框圖中的集合類部分)代表可以在各個NSString和NSScanner方法中使用的一組字符。

集合。集合是以一定的順序存儲和訪問其它對象(通常是數值)的對象。NSArray的索引從0開始,NSDictionary使用鍵-值對,而NSSet則負責對象的隨機存儲(NSCountedSet類使集合具有唯一標識)。通過NSEnumerator對象,您可以訪問一個集合中的元素序列。集合對象是屬性列表的必要元素,和其它所有對象一樣,它也可以被歸檔和分發。

操作系統服務。 很多Foundation類為訪問各種底層的操作系統服務提供便利,同時又把開發者從操作系統的具體特性隔離開來。舉例來說,您可以通過NSProcessInfo類查詢應用程序運行的環境;通過NSHost類得到主機系統在網絡中的名稱和地址;通過NSTimer對象,您可以按指定的時間間隔向其它對象發送消息;NSRunLoop可以幫您管理應用程序或其它類型程序的輸入源;而NSUserDefaults則為存儲全局(主機級別)和用戶級缺省值(預置)的系統數據庫提供編程接口。

文件系統和URL。 NSFileManager為諸如創建、重命名、刪除、和移動文件這樣的文件操作提供統一的接口。NSFileHandle則可以進行較為底層的文件操作(比如文件內查找操作)。NSBundle可以尋找存儲在程序包中的資源,可以動態裝載某些資源(比如nib文件和代碼)。您可以用NSURL和NSURLHandle類來表示、訪問、和管理源于URL的數據。

進程間通訊。 這個范疇中的大部分類代表不同的系統端口、套接字、和名字服務器,對實現底層的IPC很有用。NSPipe代表一個BSD管道,即一種進程間的單向通訊通道。

線程和子任務。 NSThread類使您可以創建多線程的程序,而各種鎖(lock)類則為彼此競爭的線程在訪問進程資源時提供各種控制機制。通過NSTask,您的程序可以分出一個子進程來執行其它工作或進行進度監控。

通告。請見"Foundation的范式和策略"部分中的有關通告類總結。

歸檔和序列化。這個范疇中的類使對象分發和持久保留成為可能。NSCoder及其子類和NSCoding協議一起,可以以獨立于架構的方式來表示對象中包含的數據,可以將類信息和數據一起存儲。

表達式和條件判斷。條件判斷類,即NSPredicate、NSCompoundPredicate、和NSComparisonPredicate類,負責對獲取或過濾對象的邏輯約束條件進行封裝。NSExpression對象則代表條件判斷中的表達式。

Spotlight查詢。NSMetadataItem、NSMetadataQuery和相關的查詢類對文件系統的元數據進行封裝,使元數據的查詢成為可能。

Objective-C語言服務。NSException和NSAssertionHandler類為代碼中的斷言和例外處理提供了面向對象的封裝。NSInvocation對象是Objective-C消息的靜態表示,您的程序可以對它存儲,并在之后用于激活另一個對象的消息。undo管理器(NSUndoManager)和分布式對象(Distributed Objects)系統都用到了這種對象。NSMethodSignature對象負責記錄方法的類型信息,可以用于信息的推送。NSClassDescription則是一個抽象類,用于定義和查詢類的關系和屬性。

腳本。這個范疇中的類可以幫助您實現對AppleScript腳本和Apple Event命令的支持。

分布式對象。 您可以通過分布式對象類來進行同一臺電腦或一個網絡中的不同電腦上的進程間通訊。其中的兩個類-NSDistantObject和NSProtocolChecker的根類(NSProxy)和Cocoa其它部分的根類不同。

網絡。NSNetService和NSNetServiceBrowser類支持稱為Bonjour的零配置網絡架構。Bonjour是在IP網絡上發布和瀏覽服務的強大系統。#p#

Application Kit

Application Kit框架包含實現圖形的、事件驅動的用戶界面需要的所有對象:窗口、對話框、按鍵、菜單、滾動條、文本輸入框—這個列表還在不斷增加。Application Kit幫助您處理所有的細節,它可以高效地進行屏幕描畫、和營建設備及屏幕緩沖區進行通訊,在描畫之前清除屏幕上的區域,以及對視圖進行裁剪。Application Kit框架中的類數量咋一看好像很嚇人,但是大多數的Application Kit類都是支持類,您不必直接使用。您還可以選擇在哪個級別上使用Application Kit:

使用Interface Builder創建從用戶界面對象到應用程序控制器對象的連接,控制器對象負責管理用戶界面,協調用戶界面和內部數據結構之間的數據流。為此,您可能會用到off-the-shelf控制器對象(用于Cocoa綁定),可能需要實現一個或更多的定制控制器類—特別是使用那些類的動作和委托方法。舉例來說,您需要實現一個方法,使之在用戶選擇某個菜單項時被調用(如果該菜單項沒有可接受的缺省實現的話)。

以編程的方式控制用戶界面,這需要對Application Kit的類和協議更加熟悉。舉例來說,支持用戶將圖標從一個窗口拖拽到另一個窗口需要一些編程工作,而且熟悉NSDragging... 協議。

通過子類化NSView或其它類實現您自己的對象。在子類化NSView時,需要用圖形函數來編寫自己的描畫函數。子類化要求對Application Kit的工作機制有更深的理解。

Application Kit概述

Application Kit由超過125個類和協議組成。所有的類最終都從Foundation框架的NSObject類繼承而來。下面的框圖顯示了Application Kit類的繼承關系。

下圖為Application Kit的類層次—Objective-C(第一部分)

Application Kit class hierarchy?Objective-C (part one)

下圖為Application Kit的類層次—Objective-C(第二部分)

Application Kit class hierarchy?Objective-C (part two)

如您所看到的那樣,Application Kit的類層次樹既寬又淺,類層次中最深的類從根類開始只有五個超類,而大多數類的層次都淺得多。類層次中的一些主要分支特別有意思。

Application Kit中最大分支的根是NSResponder類,它負責定義響應者鏈,即對用戶事件進行響應的有序對象列表。當用戶進行按鍵或鼠標點擊時,系統就會產生一個事件,并沿著響應者鏈向上傳遞,尋找可以響應該事件的對象。任何處理事件的對象都必須繼承自NSResponder類。核心的Application Kit類—NSApplication、NSWindow、和NSView—都繼承自NSResponder。閱讀"核心應用程序架構"部分可以得到有關響應者類的更多信息。

Application Kit類的第二大分支繼承自NSCell類。值得注意的是,這組類和NSControl類(繼承自NSView)的派生類有大體上的映像關系。對于負責響應用戶動作的用戶界面對象,Application Kit采用的架構將它們的工作分為控件(control)對象和單元(cell)對象。NSControl和NSCell類以及它們的子類定義了一組常見的用戶界面對象,比如按鍵(button)、滑塊(slider)、和瀏覽器(browser),用戶可以通過圖形化的操作控制應用程序的某些方面。大多數的控件對象和一個或多個單元對象相關聯,單元對象負責實現描畫細節和事件的處理。舉例來說,一個按鍵是由一個NSButton對象和一個NSButtonCell對象構成的,進一步的信息請參見"控件和單元架構"部分。

控件和單元的實現機制基于Application Kit的一個重要設計模式:目標-動作(target-action)機制。單元對象可以保留用戶點擊(或在單元上進行某種動作)時應該發送給特定對象的消息標識信息。當用戶操作一個控件時(比如用鼠標點擊控件),控件就從它的單元對象抽出必要的信息,并向目標對象發送動作消息。目標-動作機制使您可以指定目標對象及應該調用的方法,從而賦予用戶動作某種意義。您通常可以使用Interface Builder來對目標和動作進行設置,只要按住Control鍵,同時將鼠標指針從控件對象拖拽到應用程序或其它對象就可以了。您也可以通過編程的方式來設置目標和動作。

Application Kit中另一個基于設計模式的機制是委托(delegation)機制。用戶界面上的很多對象,比如文本框和表視圖,都定義了委托。委托對象代表被委托對象進行各種動作,或者與之相互協作,因此可以在用戶界面操作中實現特定的應用程序邏輯。有關委托、目標-動作、以及Application Kit的其它范式和機制的更多信息,請參見"和對象進行通訊"部分。有關這些范式和機制的基礎設計模式的討論,請參見"Cocoa的設計模式"部分。

下面部分將簡要地描述Application Kit的某些能力及其架構的某些方面,還有一些類和協議。在描述時按照圖1-9和圖1-10所示的類層次圖對類進行分組。

通用的用戶界面類

在用戶界面的總體功能方面,Application Kit提供了如下幾個類:

全局應用程序對象。 每個應用程序都使用一個NSApplication類的單件實例來控制主事件循環、跟蹤應用程序的窗口和菜單、將事件分發給恰當的對象(即應用程序本身或者它的一個窗口)、建立高級別的自動釋放池、以及接收應用程序級別的事件通告。NSApplication對象有一個委托對象(由您來分配),在應用程序啟動或終止、被隱藏或被激活、即將打開用戶選擇的文件等的時候,委托對象會得到通知。通過設置NSApplication對象的委托對象并實現相應的委托方法,您就可以定制應用程序的行為,而不必生成NSApplication的子類。"核心應用程序架構"部分對這個單件應用程序對象進行詳細的討論。

窗口和視圖。窗口和視圖類,即NSWindow和NSView,繼承自NSResponder類,可以對用戶動作進行響應。NSApplication對象內維護著一個NSWindow對象的列表—應用程序的每個窗口都有一個對應的對象,而每個NSWindow對象都維護一些具有一定層次結構的NSView對象。視圖層次用于窗口內部的描畫和事件處理。NSWindow對象負責處理窗口級別的事件,將其它事件分發給窗口中的視圖對象,并為視圖對象提供一個描畫區域。NSWindow對象也有一個委托,用于定制窗口的行為。

NSView是顯示在窗口中的所有對象的超類。所有的NSView子類都需要借助圖形函數來實現自己的描畫方法;drawRect:是一個基本方法,在創建新的NSView時,需要重載這個方法。

"核心應用程序架構"部分也對NSView和NSWindow對象進行描述。

Cocoa綁定的控制器類。NSController是一個抽象類,它的具體子類有NSObjectController、 NSArrayController、和NSTreeController,它們是Cocoa綁定實現的一部分。這個技術可以自動同步存儲在對象中的應用程序數據和該數據在用戶界面上的表現。有關這些類型的控制器對象的描述請參見"模型-視圖-控制器設計模式" 部分。

面板(對話框)。NSPanel是NSWindow的子類,用于顯示一些短暫的、全局的、或緊急的信息。舉例來說,您可以使用一個NSPanel(而不是NSWindow)的實例來顯示錯誤信息,或請求用戶對特殊或不正常的情況進行響應。Application Kit為您實現一些常用的對話框,比如Save、Open、和Print對話框,用于保存、打開、和打印文檔。將這些對話框用于各種應用程序的公共操作,可以給用戶一個統一的觀感。

菜單和光標。NSMenu、NSMenuItem、和NSCursor類負責定義應用程序顯示給用戶的菜單和光標的行為和外觀。

分組和滾動視圖。 NSBox、NSScrollView、和NSSplitView類用于為窗口中的視圖集合或其它視圖對象提供圖形“附件”。您可以通過NSBox類將窗口中的元素分組,并為整組元素描畫一個邊界。NSSplitView類可以在垂直或水平方向附加一些視圖,并為每個視圖分配一定的公共區域,用戶可以通過滑動控制條來重新分配視圖的區域。NSScrollView類及其輔助類,NSClipView,為用戶提供一個滾動機制,以及讓用戶初始化和控制滾動的圖形對象。NSRulerView類則可以為一個滾動視圖添加標尺和標志。

表視圖和大綱視圖。NSTableView類以行列的方式顯示數據。NSTableView可以很好地(但不僅限于)用于顯示數據庫記錄,在這種場合下,一行對應于一條記錄,列則包含記錄屬性。用戶可以對單獨的單元進行編輯,以及重新排列各個列。您可以通過設置委托和數據源對象來控制NSTableView對象的行為和內容。大綱視圖(即NSOutlineView的實例,是NSTableView的子類)提供了另一種顯示表格數據的方法。通過NSBrowser類,您可以為用戶創建一個顯示和漫游層次數據的對象。

文本和字體

NSTextField類實現了一個簡單的可編輯文本輸入框,NSTextView類則為更大的文本體提供更為廣泛的編輯特性。

NSTextView是抽象類NSText的子類,定義了擴展文本系統的接口。NSTextView支持富文本、添附文件(圖形文件及其它)、輸入管理和按鍵綁定、以及標識文本屬性,可以和Font窗口及Font菜單、標尺及段落風格、Serivces工具、還有剪貼板(Clipboard)等組件互相協作。NSTextView還允許通過委托和通告來進行定制—您很少需要從NSTextView派生出子類,也很少需要以編程的方式創建NSTextView的實例,因為Interface Builder選盤上的一些對象,比如NSTextField、NSForm、和NSScrollView,已經包含了NSTextView對象了。

通過NSTextStorage、NSLayoutManager、NSTextContainer、和其它相關的類,還可能實現更為強大、更具創造力的文本操作(比如在一個圓里進行文本編輯)。Cocoa文本系統還支持列表、表格、和非連續的文本選擇。

NSFont和NSFontManager類用于封裝和管理字體的家族、尺寸、和變體。對于每種不同的字體,NSFont類定義一個對象與之對應。這些對象都可以表示很多數據,為了提高效率,它們可以在應用程序中的所有對象之間共享。NSFontPanel類定義了在用戶界面上顯示的Font窗口。

圖形和顏色

NSImage和NSImageRep負責封裝圖形數據,您可以通過這些類輕松而高效地訪問存儲在磁盤文件或顯示在屏幕上的圖像。每個NSImageRep的子類都知道如何描畫特定類型的源數據代表的圖像。NSImage類可以為一個圖像提供多種表示,還實現了諸如緩存這樣的行為。Cocoa的圖像處理和描畫的能力都集成在Core Image框架中。

Cocoa的顏色處理由NSColor、NSColorSpace、NSColorPanel、NSColorList、NSColorPicker、和NSColorWell類來支持。NSColor和NSColorSpace類支持一組豐富的顏色格式和表示,包括定制顏色。其它類大多是接口類,負責定義和顯示的面板及視圖,使用戶可以選擇和應用顏色。舉例來說,用戶可以將顏色從Color窗口拖拽到任意的顏色井(color well)。NSColorPicking協議可以用于擴展標準的Color窗口。

NSGraphicsContext、NSBezierPath、和NSAffineTransform類可以實現向量描畫,支持圖形變換,比如縮放、旋轉、和轉換等。

打印和傳真

NSPrinter、NSPrintPanel、NSPageLayout、和NSPrintInfo類一起,可以將顯示在窗口或視圖上信息進行打印和傳真,還可以創建NSView的PDF表示。

文檔和文件系統支持

NSFileWrapper類用于創建與磁盤文件或目錄相對對應的對象。NSFileWrapper將文件的內容保留在內存中,以便對其進行顯示、修改、以及將它傳輸給其它應用程序。它還提供一個圖標,用于拖拽該文件或將文件表示為附件。您也可以通過Foundation框架中的NSFileManager類來訪問或枚舉文件和目錄內容。NSOpenPanel和NSSavePanel類還提供了便利和熟悉的文件系統界面。

NSDocumentController、NSDocument、和NSWindowController類為創建基于文檔的應用程序定義了一個架構(在類的層次框圖中,NSWindowController類顯示在用戶界面組中)。這類程序可以生成包含方式相同、但具有獨特排布方式的數據,這些數據可以存儲在文件中。在保存、打開、復原、關閉、以及管理這些文檔方面,它們具有一些內置或易于得到的能力。

國際化和字符輸入支持

如果一個應用程序要在世界其它地方使用,則可能需要根據語言、國家、或文化地域對其資源進行定制或本地化。舉例來說,一個應用程序可能需要有獨立的日語、英語、法語、和德語版本的字符串、圖標、nib文件、或上下文幫助。特定語言的資源文件被存放在程序包目錄下的一個子目錄下(就是那些帶有.lproj擴展名的目錄)。您通常可以通過Interface Builder來建立本地化資源文件。有關Cocoa國際化支持的更多信息,請參見"Nib文件和其它應用程序資源"部分。

NSInputServer類、NSInputManager類、和NSTextInput協議一起,為您的應用程序提供訪問文本輸入管理系統的通道。該系統負責對不同國際化鍵盤產生的按鍵進行解釋,并將正確的文本字符或Control-key事件遞送給文本視圖對象(通常由文本類和這些類進行交互,您不必介入)。

操作系統服務

下面這些Application Kit類為您的應用程序提供操作系統支持:

和其它應用程序共享數據。 NSPasteboard類定義了剪貼板,可以存儲從應用程序拷貝出來的數據,并使其它希望使用該數據的應用程序可以訪問。NSPasteboard實現了大家熟悉的剪切-拷貝-粘貼操作。通過剪貼板,NSServicesRequest協議為應用程序間的數據傳遞定義一種基于注冊服務的通訊機制(剪貼板在用戶界面上實現為Clipboard)。

拖拽。只需要少量的編程工作,定制的視圖對象就可以被拖拽到任意地方。只要遵循NSDragging...協議,對象就可以變成拖拽機制的一部分;可拖拽的對象遵循NSDraggingSource協議,而目的對象(拖拽對象的接受者)則遵循NSDraggingDestination協議。Application Kit隱藏了所有的光標跟蹤和拖拽圖像顯示的細節。

拼寫檢查。您可以通過NSSpellServer類來定義一個拼寫檢查服務,并將它作為服務提供給其它應用程序。通過NSSpellChecker類可以將您的應用程序連接到拼寫檢查服務上。NSIgnoreMisspelledWords和NSChangeSpelling協議用于支持拼寫檢查機制。

Interface Builder支持

NSNibConnector類是一個抽象類,它和兩個具體子類NSNibControlConnector和NSNibOutletConnector一起,表示Interface Builder上的連接。NSNibControlConnector負責管理Interface Builder中的動作連接,NSNibOutletConnector則管理插座變量連接。

帶有Cocoa API的其它框架

作為標準的Mac OS X安裝的一部分,蘋果系統中還包含(除了Foundation和Application Kit框架外)一些使用Cocoa編程接口的框架(它們也可能使用Carbon或其它類型的編程接口)。您可以通過這些輔助性的框架來為應用程序實現一些期望但不是必須的能力。這些重要的輔助性框架包括:

Core Data—Core Data框架可以幫助應用程序管理模型對象圖的整個生命周期,包括關系數據庫或平坦文件中數據的持久存儲。該框架還包括一些其它特性,比如undo和redo的管理、值的自動正當性檢查、將對象的狀態改變通知其它對象、以及與Cocoa綁定的集成。

Sync Services—用Sync Services可以將聯系人、日歷和書簽結構、還有您自己的應用程序數據同步起來。您還可以擴展現有的結構。

Address Book—這個框架為聯系人和其它個人信息實現了一個中心數據庫。使用Address Book框架的應用程序可以和其它應用程序分享這些聯系信息,包括蘋果的Mail和iChat。

Preference Panes—您可以通過這個框架來創建應用程序動態裝載的插件,實現用于錄入用戶偏好設置的用戶界面。這個框架可以應用到您自己或系統級的應用程序。

Screen Saver—Screen Saver框架可以幫助您創建Screen Effects模塊,該模塊可以通過系統預置(System Preferences)程序來裝載和運行。

Web Kit—Web Kit框架中提供一組在窗口中顯示萬維網內容的核心類。它缺省實現了一些功能,比如顯示用戶點擊的連接。

【編輯推薦】

  1. 蘋果官方指南:Cocoa開發環境
  2. 蘋果官方指南:Cocoa應用程序的特性
  3. 蘋果官方指南:Cocoa的環境
  4. Cocoa教程:使用代碼創建窗口
  5. Cocoa教學:對比Windows OOP與Cocoa MVC
責任編輯:佚名 來源: 蘋果官網
相關推薦

2011-06-15 17:02:02

CocoaiOS

2011-06-17 15:57:46

CocoaXcode蘋果

2011-06-17 15:38:15

Cocoa蘋果

2011-07-07 13:51:24

Cocoa 框架

2011-07-07 13:30:32

Cocoa Core

2011-07-07 14:22:27

Cocoa 對象 生命周期

2011-07-07 10:39:07

Cocoa 函數

2011-07-07 10:07:19

Cocoa 框架

2011-07-07 10:29:35

Cocoa 方法 框架

2011-07-07 10:50:09

Cocoa 框架

2011-07-26 15:14:24

蘋果 Cocoa 內存

2011-07-20 14:41:53

Cocoa Zip 框架

2011-06-15 16:11:51

UIKitCocoa TouchiOS

2011-08-02 13:58:18

Cocoa 框架 Mac OS

2011-07-28 16:52:34

Cocoa 框架 Mac Os

2011-08-08 09:51:52

Cocoa 框架

2011-05-11 15:19:01

CocoaObjective-C

2011-07-25 14:32:40

Cocoa 框架 函數

2011-07-07 14:46:10

Cocoa Xcode

2011-07-07 14:10:21

Cocoa 內省 hash
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 九九九久久国产免费 | 成年免费大片黄在线观看岛国 | 欧美极品一区二区 | 亚洲国产精品日韩av不卡在线 | 成年人网站免费视频 | 国产精品久久久久久久免费大片 | 日韩欧美在线视频 | 中文字幕高清 | 精品欧美一区二区三区免费观看 | 一区网站 | 国产精品中文字幕在线 | 欧洲成人午夜免费大片 | 超碰超碰| 精品欧美激情精品一区 | 一区二区免费 | 99热在线观看精品 | 宅女噜噜66国产精品观看免费 | 亚洲精品成人 | 中国一级特黄真人毛片 | 一区二区三区四区在线 | 国外成人免费视频 | 国产女人与拘做受免费视频 | 久久久久久久综合色一本 | 欧美日韩国产一区二区三区不卡 | 国产视频第一页 | 国产一区二区自拍 | 在线观看亚洲 | 国产日韩久久 | 国产一区二区三区色淫影院 | 国产视频三区 | 国产剧情一区 | 国产精品亚洲视频 | 国产一区二区高清在线 | 日韩精品在线免费 | 99久久久久久 | 日本一区二区视频 | 男人天堂色 | 爱爱视频在线观看 | 九九久久精品 | 羞羞在线视频 | 色资源在线观看 |