精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Cocoa程序添加行為 使用Cocoa框架

移動開發(fā) iOS
本章將描述使用Cocoa框架編寫一個Objective-C程序是什么樣的過程,并為您提供制作一個框架類的子類需要知道的信息。

Cocoa程序添加行為 使用Cocoa框架是本文丫介紹的內(nèi)容,當您用Objective-C開發(fā)程序的時候,很多工作不必自己做。您要關注蘋果和其它人已經(jīng)完成的工作,關注他們已經(jīng)開發(fā)完成并封裝在Objective-C框架的類。這些框架為您提供一組獨立的類,而這些類構成了您的程序的一部分—通常是很重要的一部分。

庫函數(shù)很少對使用它們的程序進行限制,您可以在任何需要的時候進行調(diào)用。另一方面,面向?qū)ο蟮膸旎?strong>框架中的方法和類的定義緊密相關,如果您沒有創(chuàng)建或保留可以訪問那些定義的對象,就不能對其進行調(diào)用。而且,在大多數(shù)程序中,對象必須至少和一個對象相連接,才能在程序網(wǎng)絡中發(fā)揮作用。一個類只負責定義一個程序組件,為了訪問類提供的服務,您必須將它連接到應用程序結構中。

也就是說,框架類生成一些行為類似于一組庫函數(shù)的實例。您簡單地創(chuàng)建一個實例,對其進行初始化,然后或者向它發(fā)送消息使其完成某個任務,或者將它插入到應用程序中某個設計好的插槽中。舉例來說,您可以用NSFileManager類來執(zhí)行各種文件系統(tǒng)操作,比如移動、拷貝、和刪除文件。如果您需要顯示一個警告對話框,則可以創(chuàng)建一個NSAlert類的實例,并向它發(fā)送正確的消息。

然而在一般情況下,象Cocoa這樣的環(huán)境并不僅僅是一些提供服務的、彼此獨立的類集合。它們是由一些面向?qū)ο蟮?strong>框架和面向特定問題空間并提出完整解決方案的類集合組成的。框架不是提供一些在需要時可以調(diào)用、彼此不相關的服務(象函數(shù)庫那樣),而是制訂您的代碼必須適應的整個程序結構—或者說程序模型。由于這個程序模型是具有一般意義的,您可以對它進行具體化,以滿足特定的程序需要。您要做的不是設計一個調(diào)用庫函數(shù)的程序,而是將您自己的代碼插入到框架提供的設計中。

要使用框架,就必須接受框架定義和使用的程序模型,而且需要定制一些類,使面向具體應用場合的程序可以和該模型相適應。這些類相互依賴,以一個組而不是單獨類的形式出現(xiàn)。乍一看,在程序代碼中采納框架的模型需要做的工作比較有限,但事實卻相反??蚣転槟峁┝撕芏喔淖兒蛿U展其一般行為的途徑,它只是簡單地要求您接受所有Cocoa程序的基本行為方式,因為它們都基于同樣的程序模型。

框架類的類型

Cocoa框架中的類以四種方式發(fā)布它們的服務:

復活方式。一些類定義了復活(off-the-shelf)對象以方便用戶使用。您可以簡單地創(chuàng)建這些類的實例,并根據(jù)需要對其進行初始化。NSControl的子類,比如NSTextField、NSButton、和NSTableView(和與之相關聯(lián)的NSCell類一起)都屬于這個范疇。雖然您也可以通過編程的方式來創(chuàng)建和初始化復活對象,但是通常還是用Interface Builder來進行這些工作。

幕后方式。在程序運行時,Cocoa會在“幕后”為其創(chuàng)建一些框架對象。您不需要顯式分配和初始化這些對象,框架會自動替您完成這些工作。這些類通常是私有的,但是要實現(xiàn)期望的行為。

一般類的方式??蚣苤杏幸恍┮话泐悾蛘哒f抽象類??蚣芸赡芴峁┮恍┮话泐惖木唧w子類,不經(jīng)修改就可以使用。然而您可以—在某些情況下是必須—定義您自己的子類,并重載特定的方法。NSView、NSDocument、和NSFormatter類就是這種類的例子。

委托者和通告者方式。很多框架對象將自己的動作通知給其它對象,甚至將特定的責任委托給其它對象。傳遞這種信息的機制就是委托和通告機制。委托者對象需要公布一個被稱為非正式協(xié)議的接口,客戶對象則必須首先注冊為委托,然后實現(xiàn)該接口中的一個或多個方法。發(fā)布通告的對象要公布自己廣播的通告列表,而所有的客戶對象都可以自由監(jiān)聽其中的一個或多個公告。NSApplication、NSText、和NSWindow就是一些委托者類,而很多框架類都可以廣播通告。

某些類提供不止一種類型的服務。舉例來說,您可以將一個準備好的NSWindow對象從Interface Builder的選盤中拖出,并在少量的初始化之后進行使用。這樣,NSWindow類就為您提供了復活實例。但是一個NSWindow對象也需要向它的委托發(fā)送消息,以及向其它對象發(fā)布通告。如果需要,比如您希望有一個圓角的窗口,您甚至可以生成NSWindow的子類。

采用***兩種服務方式—即一般類方式和委托者/通告者方式—的Cocoa類為將程序的具體代碼集成到框架提供的結構中提供***的可能性。"Cocoa類的繼承"部分就如何創(chuàng)建框架類、特別是一般類的子類進行一般性的討論,有關委托、通告、以及程序網(wǎng)絡中的其它對象間通訊機制的信息請參見“和對象進行通訊”部分。

Cocoa API的約定

在您開始使用Cocoa框架中的類、方法、和其它API的時候,需要知道一些約定,它們都是為了確保使用效率和一致性而制訂的。

返回對象的方法通常通過返回nil來表示“創(chuàng)建失敗”或者“沒有對象可以返回”。這種方法并不返回狀態(tài)碼。

返回nil的約定通常用于表示運行時錯誤或其它非例外的條件。Cocoa框架通過拋出例外(由最***的例外處理代碼處理)來處理諸如“數(shù)組索引越界” 或 “不能識別方法選擇器”這樣的錯誤,如果方法簽名有要求的話,同時返回nil。

某些可能返回nil的方法可以通過***一個參數(shù)以引用的方式返回錯誤信息。

上述的***一個參數(shù)是一個NSError對象的指針;對于執(zhí)行失敗的方法(也就是說方法返回nil),您可以通過考察返回的錯誤對象來確定錯誤的原因,或者將錯誤顯示在對話框上。

以NSDocument類的一個方法為例:

  1. - (id)initWithType:(NSString *)typeName error:(NSError **)outError;  

類似地,執(zhí)行某些系統(tǒng)操作的方法(比如文件讀寫)通常返回一個Boolean值,以指示執(zhí)行成功還是失敗。

這些方法也會將一個NSError對象指針作為***一個引用參數(shù)。以NSData類的一個方法為例:

  1. - (BOOL)writeToFile:(NSString *)path options:(unsigned)writeOptionsMask error:(NSError **)errorPtr;  

Cocoa用空的容器對象來表示缺省值或沒有值—nil通常不是正當?shù)膶ο髤?shù)。

很多對象封裝了對象的值或集合。將這些對象作為參數(shù)的方法可以接收表示沒有值或缺省值的“空”對象(比如@"")。比如,下面的消息通過指定一個空的字符串,將一個窗口的關聯(lián)文件名設置為“沒有值”:

  1. [aWindow setRepresentedFilename:@""];  

請注意:Objective-C的@“characters”構造器用于創(chuàng)建一個包含文字字符的NSString對象,因此@““會創(chuàng)建一個不包含字符的字符串對象—或者說是一個空字符串。

Cocoa框架要求在字典鍵、通告和例外名稱、以及一些用字符串作為參數(shù)的方法上使用全局字符串常數(shù),而不是一個字符串文字。在可以進行選擇的時候,您應該總是選擇字符串常量,而不是字符串文字。使用字符串常量時,編譯器可以幫助您進行拼寫檢查,這樣可以避免運行時錯誤。Cocoa框架在類型使用上是一致的,各組API之間可以進行較好的匹配。

舉例來說,Cocoa框架用float來表示坐標的值,用CGFloat類型表示圖形和坐標值,用NSPoint(由兩個CGFloat值組成)來表示坐標系統(tǒng)中的一個位置,用NSString對象來表示字符串的值,用NSRange來表示范圍(起始點和偏移量),分別用NSInteger和NSUInteger來表示有符號和無符號的整數(shù)值。當您設計自己的API時,應該盡量保持類似的一致性。相當一部分Cocoa API約定關注于類、方法、函數(shù)、常量、和其它符號的命名。在您開始設計自己的編程接口時,需要知道這些約定。一部分較為重要的命名約定如下所示:

在類名和與類相關聯(lián)的符號,比如函數(shù)和typedef定義的類型上,使用前綴。使用前綴可以避免命名沖突,幫助區(qū)分不同的函數(shù)域。前綴的命名約定是使用兩個或三個唯一的大寫字母,比如ACCircle中的“AC”。在API的命名上,清楚比簡潔更重要。舉例來說,removeObjectAtIndex:的功能很容易理解,但是remove:就有點模糊。避免模菱兩可的命名。

比如displayName就模菱兩可,因為我們不清楚它的功能是顯示一個名稱還是返回一個顯示名稱。在代表動作的函數(shù)或方法名上使用動詞。如果一個方法返回一個屬性或經(jīng)過計算的值,則直接使用屬性名作為方法名。這些方法就是所謂的“getter”存取方法。舉例來說,如果屬性是背景顏色,則getter方法應該命名為backgroundColor。返回Boolean值的getter方法的命名有細微的區(qū)別,采用“is”或“has” 前綴—比如hasColor。

對于負責設置屬性值的方法(也就是“setter” 存取方法),則其名稱以“set”開頭,后接屬性名稱。屬性名稱的***個字母是大寫字母—比如setBackgroundColor:。請注意:有關如何實現(xiàn)setter和getter方法的詳細討論,請參見模型對象實現(xiàn)指南文檔中的“存取方法”部分。不要在API名稱上使用縮寫,如果不是眾所周知的縮寫的話(比如HTML或TIFF)。

如果需要Objective-C編程接口命名風格的完整資料,請參見Cocoa編碼指南。還有一個一般性的、具有決定作用的API約定,是關于對象所有權的。簡單地說,這個約定就是,如果一個客戶代碼進行對象的創(chuàng)建(通過分配、初始化)、拷貝、和保持(通過發(fā)送retain消息),就擁有該對象的所有權。對象的所有者在不需要使用該對象時,要向它發(fā)送release或者autorelease消息進行清除。

小結:Cocoa程序添加行為 使用Cocoa框架的內(nèi)容介紹完了,希望本文對你有所幫助。關于Cocoa更多的相關內(nèi)容,請參考編輯推薦。

責任編輯:zhaolei 來源: 互聯(lián)網(wǎng)
相關推薦

2011-06-17 16:23:49

Cocoa蘋果

2011-05-31 15:41:00

Cocoa TouchCocoaiOS

2011-08-11 15:46:55

CocoaCocoa Touch框架

2011-08-10 18:37:32

CocoaMac OS X

2011-07-20 14:41:53

Cocoa Zip 框架

2011-06-15 16:11:51

UIKitCocoa TouchiOS

2011-07-28 16:52:34

Cocoa 框架 Mac Os

2011-08-02 13:58:18

Cocoa 框架 Mac OS

2011-08-10 18:13:01

Cocoa文字字符串

2011-05-11 15:27:58

Windows OOPCocoa MVCCocoa

2011-07-28 10:34:38

Cocoa 程序 啟動

2011-07-07 13:39:14

Cocoa 框架

2011-08-08 09:51:52

Cocoa 框架

2011-05-11 15:19:01

CocoaObjective-C

2011-07-25 14:32:40

Cocoa 框架 函數(shù)

2011-08-15 14:27:51

CocoaRunLoop

2011-05-11 17:48:31

CocoaiOS

2011-07-07 13:30:32

Cocoa Core

2011-07-07 13:59:49

Cocoa Objective- 根類

2011-07-07 14:22:27

Cocoa 對象 生命周期
點贊
收藏

51CTO技術棧公眾號

丝袜诱惑一区二区| 日韩色图在线观看| 精品一区二区三区视频在线播放 | 91精品人妻一区二区三区蜜桃2| а√中文在线8| 国产福利精品导航| 久久久久久久久久久91| 稀缺呦国内精品呦| 美女福利一区二区三区| 国产日韩欧美高清| 成人国产精品色哟哟| 无码人妻精品一区二区三区夜夜嗨| 一本色道69色精品综合久久| 欧美日韩免费网站| 日韩欧美亚洲日产国产| 91丨九色丨蝌蚪丨对白| 亚洲网站啪啪| 亚洲欧美日韩中文视频| 三级av免费观看| 黄色大片在线| 久久嫩草精品久久久精品| 国产精品美女视频网站| 欧美色图一区二区| 九九精品久久| 日韩一区二区视频| 91精品国产91久久久久麻豆 主演| 亚洲区小说区图片区| 久久精品国内一区二区三区| 久精品免费视频| 成人性生交大免费看| 中文字幕成人| 欧美日韩国产一中文字不卡 | 国产三级精品三级在线| a天堂中文在线官网在线| av电影在线观看不卡| 国产精品久久久久久久久久99| 爱爱视频免费在线观看| 久久综合色占| 日韩女同互慰一区二区| 拔插拔插海外华人免费| 欧美激情午夜| 久久久久亚洲蜜桃| 国产精品区二区三区日本| 成人一级免费视频| 国产日韩专区| 欧美日韩国产va另类| 男人的天堂官网| 精品女人视频| 91精品久久久久久蜜臀| 国产精彩免费视频| а√天堂8资源在线| 中文字幕亚洲不卡| 日韩欧美精品久久| 神马精品久久| av亚洲精华国产精华精| 91亚洲一区精品| 尤物视频免费观看| 亚洲每日在线| 欧美极品美女视频网站在线观看免费 | 午夜影院日韩| 97在线观看免费| 中文字幕五月天| 91欧美在线| 少妇精69xxtheporn| 久久美女免费视频| 亚洲第一二三区| 亚洲精品白浆高清久久久久久| 欧美在线a视频| 国产精品66| 日本高清不卡视频| 亚洲中文字幕无码不卡电影| 人人草在线视频| 精品国产成人av| 2018中文字幕第一页| av免费在线观看网址| 中文字幕五月欧美| 六月婷婷激情网| 黄色动漫在线观看| 亚洲精品乱码久久久久久日本蜜臀| 亚洲精品在线观看免费| 成年人视频网站在线| 日本一区二区三区国色天香 | 国产精品久久久毛片| 国产成人福利夜色影视| 欧美日韩一区小说| 蜜桃福利午夜精品一区| 国产精品99久久免费| 欧美一区二区黄| 在线播放国产视频| 丁香5月婷婷久久| 亚洲第一国产精品| 日本xxx在线播放| 日韩理论电影大全| 久久久97精品| 国产精品免费人成网站酒店| 欧美一区国产在线| 欧美日产国产成人免费图片| 日韩特黄一级片| 亚洲国产高清一区| 欧日韩在线观看| 亚洲视频久久久| 国产剧情一区二区| 久中文字幕一区| 精品av中文字幕在线毛片| 国产精品色哟哟网站| 黄页视频在线91| 欧美三片在线视频观看| 制服丝袜综合网| 亚洲狼人综合| 日韩欧美视频一区| 一区二区三区少妇| 色综合五月天| 欧美国产日韩一区二区| 国产午夜小视频| 日韩精品午夜视频| 91久久久久久久| 天天摸天天干天天操| 国产精品五月天| 日韩精品在线观看av| 亚洲第一二三四区| 欧美大片拔萝卜| 国产中年熟女高潮大集合| 欧美日韩精品在线一区| 欧美夫妻性生活xx| 中文字幕在线播放av| 成人少妇影院yyyy| 亚洲综合视频一区| 亚洲国产成人二区| 日韩一级黄色大片| 永久免费av无码网站性色av| 亚洲婷婷免费| 国产精品久久久久9999| 欧美一级片免费| 国产精品福利一区二区| 干日本少妇首页| 国产高清亚洲| 国产午夜精品全部视频在线播放| 国产第一页第二页| 国产综合色精品一区二区三区| 粉嫩av四季av绯色av第一区| 尤物视频在线免费观看| 欧美日韩国产一区二区| 亚洲国产精品第一页| 成人区精品一区二区婷婷| 88国产精品欧美一区二区三区| 国产精品久久综合青草亚洲AV| 2020国产精品久久精品美国| 国产日韩亚洲欧美在线| 9999在线精品视频| 在线观看欧美成人| 黄瓜视频在线免费观看| 99视频一区二区三区| 国产精品av免费观看| 国产美女视频一区二区| 搡老女人一区二区三区视频tv| 国产又黄又粗又爽| 97国产一区二区| 国产夫妻自拍一区| 高清一区二区中文字幕| 中文字幕精品av| 一级黄色av片| 国产视频亚洲色图| 国产玉足脚交久久欧美| 亚洲三区欧美一区国产二区| 久久亚洲私人国产精品va | 国产亚洲一区二区在线观看| 熟女视频一区二区三区| 新片速递亚洲合集欧美合集| 亚洲精品自在久久| 老熟妇仑乱一区二区av| 91免费国产在线| 久久99久久99精品| 老牛影视av一区二区在线观看| 欧美激情网站在线观看| 亚洲国产日韩在线观看| 亚洲欧美乱综合| 搡的我好爽在线观看免费视频| 亚洲五月综合| av成人综合网| 国产在线美女| 亚洲精品日韩在线| 日本黄色一级视频| 国产精品美女久久久久aⅴ国产馆| 美女网站色免费| 91精品国产麻豆国产在线观看| 91亚洲国产成人精品性色| 三级福利片在线观看| 亚洲成人在线网| 天码人妻一区二区三区在线看| 久久亚洲影视婷婷| 污污动漫在线观看| 在线看片不卡| 狠狠久久综合婷婷不卡| 92国产精品| 在线亚洲午夜片av大片| 国内老熟妇对白hdxxxx| 亚洲国产美国国产综合一区二区 | 95精品视频在线| av无码精品一区二区三区| 欧美系列电影免费观看| 成人性教育视频在线观看| 黄视频网站在线看| 精品免费一区二区三区| 国产一区二区视频免费| 专区另类欧美日韩| 无码精品一区二区三区在线播放| 三级欧美韩日大片在线看| 中文字幕欧美人与畜| 亚洲欧洲国产精品一区| 日韩av电影免费观看高清| 天堂中文а√在线| 亚洲第一中文字幕在线观看| 久久这里只有精品9| 一二三区精品福利视频| 久久精品国产亚洲AV熟女| 九九在线精品视频| 男人日女人逼逼| 婷婷精品进入| 久久五月天婷婷| 在线日韩三级| 欧美黑人性生活视频| www在线播放| 亚洲国产精品电影| 中文字幕 视频一区| 亚洲国产精品久久艾草纯爱 | 中文字幕亚洲精品在线观看| 极品白嫩丰满美女无套| 国产一区二区三区综合| 虎白女粉嫩尤物福利视频| 中文av一区| 日韩av影视| 国内精品偷拍| 91中文字幕一区| 亚洲a∨精品一区二区三区导航| 欧美黑人性猛交| 免费黄色网页在线观看| 亚洲另类xxxx| 高清毛片aaaaaaaaa片| 在线91免费看| 日本一本在线观看| 欧美丝袜一区二区| 中文字幕乱码在线| 国产福利一区二区三区视频在线 | 中文字幕国产亚洲| jizz在线观看视频| 在线视频中文亚洲| 日本中文在线观看| 久久久久999| 成人av福利| 欧美黑人巨大xxx极品| 黑人极品ⅴideos精品欧美棵| 欧美国产日韩二区| 成年网站在线视频网站| 欧美精品福利视频| 欧美sm一区| 国产99久久久欧美黑人 | 91激情五月电影| 中文字幕人妻互换av久久 | 视频二区在线观看| 亚洲精品国产电影| 免费在线国产| 中国人与牲禽动交精品| 黄色在线观看网站| 欧美丰满少妇xxxxx做受| 欧美裸体视频| 国产精品91一区| 精品国产亚洲一区二区三区大结局 | xvideos亚洲人网站| 亚洲制服国产| 韩国日本不卡在线| 精品欧美一区二区三区在线观看 | 色yeye免费人成网站在线观看| 日韩一区视频在线| av大大超碰在线| 97久久超碰福利国产精品…| 另类专区亚洲| 国产精品免费久久久久影院| 欧洲亚洲精品久久久久| 亚洲伊人久久大香线蕉av| 国产精品17p| 日本福利一区二区三区| 2023国产精品久久久精品双| 人妻夜夜添夜夜无码av| 日韩精品一二区| 亚洲av无一区二区三区久久| 99精品久久久久久| 日本爱爱小视频| 无码av免费一区二区三区试看| 天天爱天天做天天爽| 日韩欧美国产wwwww| 免费资源在线观看| 欧美尺度大的性做爰视频| 亚洲天堂资源| 96sao精品视频在线观看| 日韩欧美黄色| 欧美xxxx吸乳| 天堂一区二区在线| www.四虎精品| 亚洲欧洲性图库| 欧美日韩一二三四区| 91精品国产色综合久久久蜜香臀| 日韩精品一二| 欧美激情xxxxx| 91福利精品在线观看| 国产精品免费一区二区三区观看 | 被灌满精子的波多野结衣| 亚洲一区免费| 91精品国产高清91久久久久久 | 久久久久黄色| 久久偷窥视频| 国内精品99| 在线观看免费不卡av| 久久精品这里都是精品| 久草视频精品在线| 日韩欧美国产三级电影视频| 69av亚洲| 国产不卡精品视男人的天堂| 国产色噜噜噜91在线精品| 艳母动漫在线观看| 青青草国产精品亚洲专区无| 中文字幕一区二区三区人妻不卡| 一区二区三区欧美| 国产人妻精品一区二区三| 一色桃子一区二区| 免费在线小视频| 国产精品初高中精品久久| 亚洲国产日韩欧美在线| 男女污污的视频| 久久久久久久久99精品| 亚洲高清毛片一区二区| 亚洲激情成人网| 国产丝袜视频在线播放| 国产精品国色综合久久| 欧美视频导航| 免费在线观看日韩av| 亚洲精品视频免费观看| 国产精品国产一区二区三区四区| 欲色天天网综合久久| 亚洲成人激情社区| 欧洲精品在线一区| 久久久亚洲人| 免费观看a级片| 欧美性受xxxx黑人xyx性爽| 日韩精品视频在线观看一区二区三区| 91av国产在线| 免费av一区二区三区四区| 国产成人无码精品久久久性色| 91视频免费观看| 国产精品100| 亚洲图片在线综合| 99九九久久| 中文精品一区二区三区| 韩国理伦片一区二区三区在线播放 | 五月天亚洲一区| 精品中文字幕av| 久久久久国产精品免费免费搜索| 好吊色在线视频| 在线日韩av观看| 国产一区二区三区精品在线观看| 麻豆视频传媒入口| 成人午夜私人影院| 欧美一区二区激情视频| 在线视频日本亚洲性| 国产在线一区不卡| 国产视频一视频二| 久久蜜桃一区二区| 中文字幕在线观看第二页| 久久九九全国免费精品观看| 日韩中文字幕在线一区 | 久久精品国产秦先生| 国产大学生自拍| 日韩成人中文电影| 久久伊人国产| 一本大道东京热无码aⅴ| 不卡一卡二卡三乱码免费网站| 久久精品视频1| 在线观看久久av| 国产成a人亚洲精v品在线观看| 三级亚洲高清视频| 我要看一级黄色录像| 精品国产电影一区二区| 香蕉视频亚洲一级| 97av中文字幕| 91女厕偷拍女厕偷拍高清| 91九色蝌蚪91por成人| 欧美国产视频一区二区| 国产麻豆精品久久| 99热这里只有精品2| 日韩欧美一区视频| 日韩特级毛片| 色女人综合av| 不卡在线观看av| 国产一区二区在线播放视频| 91av免费观看91av精品在线| 91精品国产视频| 亚洲区自拍偷拍| 亚洲国产免费av| 欧美第一在线视频| 国产熟人av一二三区| 五月婷婷另类国产|