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

初學者開發文檔:Objective-C語言學習基礎

移動開發 iOS
本文主要來介紹Objective-C是怎么在語言中實現這些概念的,同時也演示一下真正的Objective-C的代碼是怎么樣的。

Objective-C語言學習基礎是本文要介紹的內容,在面向對象編程中必須具有的最基本的功能是向對象發送消息。在Objective-C中,我們采用以下的結構發送消息:

  1. [receiver message]; 

receiver是你要向它發送消息的對象,message是你要接收對象執行的method。例如,假設在我們的程序中有一個對象dataTable,我們想要更新它的數據。要這樣做,我們要在程序中包含以下的語句,給數據表發送消息:

  1. [dataTable reloadData]; 

在Objective-C的method中,參數用冒號進行標記。

  1. [textField setEditable:YES]; 

你可以有多個參數,每個以冒號為引導。消息也可以進行嵌套,如果參數類型和返回類型是一致的話。例如,我們可以讀取滾動條的值并把它在文本區內顯示出來。

  1. [textField setDoubleValue:[slider doubleValue]]; 

這里,[slider doubleValue]是[textField setDoubleValue: ]的參數。doubleValue命令返回值為double類型,與setDoubleValue的輸入參數類型一致。

關于數據類型,在Objective-C中,對象的類型全部為id。id類型的變量僅僅只是對象的描述符而已。事實上,它們是指向對象數據結構的指針,這個超出了我們討論的范圍。在代碼中,我們象使用其它變量一樣,產生指向對象的變量。

  1. id anObject; 

在Objective-C中,缺省的返回數據類型為id。所以,如果你的method沒有指定返回類型,它會自動分配為id。

也可以把一個數據變量的類型指定為特定的類。這稱作靜態類型。所有指向對象的變量實際上都是指向它們內存位置的指針。這種實現方式在多數情況下,對編程人員是透明的。當然,如果是靜態類型的話,就不是透明的了。

當我們創建一個id類型的變量,事實上它隱含為一個對象的指針。id定義為指針類型——一個對象的標識。但如果你有一個指向字符串的變量,而且你象把它靜態聲明為NSString,你必須在代碼中顯式地聲明這個變量是一個指針。這可以通過C的指針聲明來實現:

  1. NSString *aString; 

變量名前面的星號不是變量名的一部分,而是表明aString是NSString這個對象的指針。這是你唯一需要知道的關于對象變量的指針屬性的知識。只有在聲明新的變量的時候才需要使用C的指針結構。在你隨后引用aString的時候,它就好象其它變量一樣。

如果你對指針或C語言本身不熟悉,可以參考Brian Kerrnighan和Dennis Ritchie(C語言的作者)編寫的《C編程語言》。另外,我還想推薦Steve Oulline編寫的《使用C編程》。

其它產生嵌套method的方法

現在我們有一個對象的數據類型,我們可以用與上面不同的方式產生嵌套的method。一個返回id類型的消息可以作為其它消息的接收者。

  1. double number;  
  2. number=[anArray lastObject] doubleValue]; 

當然,我們假定[anArray lastObject]返回的對象能夠相應doubleValue這個消息。我們擁有了一個對象的陣列。[anArray lastObject]返回的對象處于陣列的最頂端,然后它接收到一個doubleValue的消息。

在Objective-C中定義新的類

現在,我想和你討論在Objective-C源代碼中如何定義一個新的類。按照界面和實現分開的精神,Objective-C在兩個分開的文件中定義新的類——一個界面文件和一個實現文件。

界面文件包括使用類所需要的全部信息,包括所有實例變量的聲明和method的定義。程序員通過研究界面文件了解哪一個類適合使用。實現文件包括method如何實現的源代碼。

一個類的界面和實現往往分在兩個文件中,雖然對編譯器來說并沒有這樣的強制要求。實現文件的后綴為:.m,也就是Objective-C源文件的擴展名。界面文件的擴展名為.h,和C語言的頭文件是一樣的。類文件的名字通常與類的名字一樣,雖然這也不是編譯器的強制要求。這樣,一個叫“Circle”的類會在文件Circle.h和Circle.m中定義。

界面文件

界面文件聲明構成類的實例變量和method。一個界面文件的結構為:

  1. @interface 類的名字 : 它的超類的名字  
  2. {  
  3. 實例變量的聲明  
  4. }  
  5. method的聲明  
  6. @end 

界面聲明總以編譯器指令@interface開始,@end結束。在***行跟在@interface之后的是類的名字。在類的名字后面是一個冒號,這之后是你的類所繼承的類的名字——它的超類。如果你沒有指定超類,那么它就會假定你是在創建一個新的根類,就好象Cocoa中的NSObject一樣。

***行以后在大括號內的是實例變量的聲明。這是method所要操作的類的數據結構。在我們假設的Circle類中,實例變量的聲明也許會是這樣的:

  1. double radius;  
  2. double xLacation;  
  3. double yLocation;  
  4. NSColor *color; 

實例變量的變量聲明總是以數據類型在前面。后面我們會學到,NSColor是操作顏色的應用庫的類。

在實例變量聲明之后是method的聲明。象標準的C函數,Objective-C中的method有返回值和輸入參數。另外,method既可以是類的也可以是實例的。類method只能由前面討論過的類對象來調用,而實例method則可以由類的任何對象來調用。method名前面的加號表示這是一個類method。

  1. + alloc 

以減號開頭的method聲明表示這是一個實例method。

  1. - (void) setXLocation: (double)x YLocation: (double)y; 

method的返回值由method名前面括號內的類型確定。參數跟在冒號之后,多個參數由參數名和空格分開。象method的返回類型一樣,參數的數據類型也是由參數名前面括號內的類型決定。

如果一個類與它的超類由關聯,應該導入它的超類的界面文件,通常是超類的名字后面加上.h構成。

  1. #import "ItsSuperclass.h" 

#import語句的作用和你也許已經很熟悉的#include很相似——區別只是#import更智能化一些。#import***的優勢在于它自動檢查一個文件是否已經被導入過,而不會重復進行導入。#include并不進行這個檢查。

實現文件

實現文件是你的類的代碼核心部分。這個文件包括你使得你的method運作的所有代碼——使得你的類能夠完成一些有意義的工作。界面文件使你的類的描述性部分,使其它程序員編寫的代碼可以與你的類一起工作。實現文件使你的類完成需要的工作。

實現文件的格式與界面文件的有些類似:

  1. #import "類名.h"  
  2. @implementation 類名 : 超類名  
  3. {  
  4. 實例變量聲明  
  5. }  
  6. method定義  
  7. @end 

每個類的實現都必須引用它的界面文件。因為界面文件中已經聲明了你所繼承的超類,因此這部分可以省略。這更加明確了實現文件主要關于method實現的概念。這樣,在實踐中,實現文件只需要以下的代碼:

  1. #import "類名.h"  
  2. @implementation 類名  
  3. method定義  
  4. @end 

method的定義和C函數的定義類似。名字應該與界面文件完全一致(沒有分號),method的實現代碼包括在名字后面的一對大括號中。例如,我們的Circle類的method為:

  1. + alloc  
  2. {  
  3. 你的代碼  
  4. }  
  5. - (void)setXLocation: (double)x YLocation: (double)y  
  6. {  
  7. 你的代碼  

你也許會奇怪為什么+ alloc沒有返回值。Objective-C的缺省返回值是id——也就是說,它缺省返回一個對象。+ alloc這個method設計為返回類的一個對象,因此沒有必要指明返回值。在提到+ alloc這個method時,我要指出你很少需要自己實現這個method。NSObject這個類會處理這個問題。+ alloc的目的是為新創建的對象分配內存。下面的內容會涉及創建新對象的細節。

實例變量可以在你的method中直接引用。不需要特別指明,所有實例變量與method處于同一個名域。它們就象C中全局變量。這樣,我們可以象下面那樣定義第二個method:

  1. - (void)setXLocation: (double)x YLocation: (double)y  
  2. {  
  3. xxLocation = x;  
  4. yyLocation = y;  

另外,也可以定義局部變量,它們具有更加局限的作用區域。例如,在上面的第二個method中,我們可以添加一個沒用的中間變量:

  1. - (void)setXLocation: (double)x YLocation: (double)y  
  2. {  
  3. double tempX;  
  4. double tempY;  
  5. tempX = x;  
  6. tempY = y;  
  7. xLocation = tempX;  
  8. yLocation = tempY;  

你會發現任何可以應用于標準C函數的,都可以應用于類的method。

創建新對象

要創建一個新對象,你可以向你想創建的實例所屬的類的類對象發送一個alloc消息。例如,我想創建Circle類的一個實例,我們可以這樣做:

  1. id aCircle;  
  2. aCircle = [Circle alloc]; 

記住,alloc返回一個對象,所以你打算存儲你所創建的實例的變量應該是id類型的。一旦創建了新的實例,我們需要初始化它的實例變量。這可以想新創建的對象發送一個init消息。

  1. [aCircle init]; 

初始化必須在分配內存之后立刻進行,所以一般用兩個嵌套的消息來完成。

  1. aCircle=[[Circle alloc] init]; 

缺省地,init把所有實例變量初始化為0。你可以創建你自己的初始化method,也稱為構造函數,來安裝你的需求初始化變量。通常構造函數以“init”開頭。因為構造函數需要和一個對象的實例變量打交道,所以它應該是一個實例method,而不是象“alloc”那樣的類method。例如,你可以為我們的Circle類創建一個構造函數,把半徑初始化為10。這個method應該是這樣的:

  1. - (void)initWithRadius: (double)r;  
  2. {  
  3. rradius = r;  

任何沒有在你的構造函數中初始化的實例變量缺省地設置為0。

在Project Builder中

到現在位置,我還沒有提到Project Builder。但我現在想談到一個與現在討論有關的特性。Project Builder包含類的界面和實現文件的模板。你獲得是一個繼承自基礎庫中NSObject類的框架——你所需要做的是用你自己的數據結構和method來填充它。所以,現在你應該了解類在源代碼級的結構,同時也知道怎么簡單地創建它。

現在我們已經基本介紹完入門的知識,下面將要進入真實程序的編程。下一次,我將會介紹Interface Builder。我們對Interface Builder的學習主要是通過實驗。

小結:初學者開發文檔:Objective-C語言學習基礎的內容介紹完了,希望本文對你有所幫助!

責任編輯:zhaolei 來源: 互聯網
相關推薦

2011-08-17 12:03:36

Objective-C

2011-08-12 10:27:52

Objective-C對象

2011-08-05 14:16:47

Objective-C 變量 方法

2011-08-10 19:16:50

Objective-C變量

2011-08-10 16:44:56

iPhone代理設計模式

2011-08-01 11:49:05

Objective-C

2011-08-04 14:58:37

Objective-C Cocoa NSString

2011-07-07 17:04:33

iPhone Action Objective-

2011-07-18 14:59:20

iPhone Objective-

2010-01-14 17:18:17

C++語言

2011-08-04 18:01:07

IOS Cocoa Touc

2011-09-14 09:49:41

Android開發

2011-08-15 17:06:01

Objective-CNSLog

2011-08-25 15:51:10

Lua腳本

2011-09-08 10:38:37

Widget

2009-06-15 14:08:00

NetbeansJava

2020-09-08 19:03:41

Java代碼初學者

2011-05-11 11:20:26

Objective-C

2011-08-29 15:45:59

Lua函數

2010-01-15 19:05:42

學習C++
點贊
收藏

51CTO技術棧公眾號

国产伦精品一区二区三区视频青涩| 精品国产aⅴ| 精品久久久久久久久久国产 | 国产精品久久久久9999爆乳| 三级视频在线看| 日韩精品色哟哟| 欧美夫妻性生活xx| 影音先锋制服丝袜| 亚洲电影一区| 久草免费在线视频| 久久成人精品| 欧美xxxx14xxxxx性爽| 国产精品黄色影片导航在线观看| 蜜桃精品成人影片| 亚洲国产91视频| 精品免费在线观看| 91手机视频在线| 天天干天天做天天操| 久久精品国产亚洲一区二区三区| 久久男人资源视频| 国内毛片毛片毛片毛片毛片| 日韩av三区| 日韩一区二区三| 午夜宅男在线视频| 在线成人av观看| 亚洲激情成人在线| 亚洲一区二区三区午夜| 天堂网av2014| 国产精品一区在线| 国产精品在线看| 久久青青草原亚洲av无码麻豆| 欧美暴力喷水在线| 中文字幕少妇一区二区三区| www.日本高清| xxxxxhd亚洲人hd| 制服丝袜成人动漫| 亚洲国产高清av| 色成人免费网站| 欧美午夜片欧美片在线观看| 妺妺窝人体色www看人体| aiai在线| 久久中文娱乐网| 九九九九九九精品| 成人免费视频国产免费麻豆| 国产一区 二区 三区一级| 国产精品美女午夜av| av图片在线观看| 国产情侣一区| 97人洗澡人人免费公开视频碰碰碰| 91精品一区二区三区蜜桃| 成人亚洲一区二区| 一区二区三区无码高清视频| 亚洲久久久久久久| 国产91一区| 亚洲天堂影视av| 日本精品在线观看视频| 国产亚洲一区| 伊人久久久久久久久久久| 波多野结衣 在线| 免费观看久久av| 国产一区二区日韩| 99久久99久久精品免费| 日韩在线观看电影完整版高清免费悬疑悬疑| 亚洲欧美日韩成人| 国产真人做爰视频免费| 欧美限制电影| 日韩中文字幕在线免费观看| 欧美激情图片小说| 黄色精品网站| 日韩免费高清在线观看| 特级西西444www高清大视频| 蜜桃av一区二区在线观看| 成人福利视频在线观看| 国产成人精品一区二三区四区五区 | 久久91超碰青草在哪里看| 欧美精品三级日韩久久| 亚洲一区二区偷拍| 成人爽a毛片| 国产视频久久网| 日韩欧美黄色网址| 婷婷亚洲五月色综合| 欧美另类69精品久久久久9999| 久久久久亚洲AV| 免费在线日韩av| 国产中文字幕亚洲| 狠狠躁日日躁夜夜躁av| 久久蜜桃av一区精品变态类天堂| 亚洲欧美日韩精品久久久 | 色窝窝无码一区二区三区| 久久久久久免费网| 国产系列第一页| 成人黄色动漫| 欧美日韩欧美一区二区| 亚洲欧美日韩成人| 手机看片福利盒子久久| 亚洲国产91视频| 亚洲激情在线视频| 精品人体无码一区二区三区| 黑人一区二区| 国产精品女人网站| 黄色一级大片在线免费看国产一| 久久久久久久久伊人| 91九色国产ts另类人妖| 久草在线中文最新视频| 3d成人h动漫网站入口| 中文字幕在线播放一区| 欧美亚洲国产激情| 777精品视频| 艳妇乳肉豪妇荡乳av| 99精品视频中文字幕| 亚洲一区二区三区精品视频 | 日本人成精品视频在线| 99久久亚洲精品日本无码| 99视频有精品| 日韩精品第1页| 成人国产精品入口免费视频| 亚洲第一色中文字幕| 最新黄色av网址| 久久黄色影院| 高清不卡日本v二区在线| 日本最新在线视频| 欧美性videos高清精品| 美女露出粉嫩尿囗让男人桶| 成人在线一区| 日本欧美黄网站| 外国精品视频在线观看| 亚洲欧美国产高清| 日日噜噜噜噜久久久精品毛片| 麻豆一区二区| 欧美激情乱人伦| 999av视频| ...xxx性欧美| 中文字幕22页| 成人情趣视频| 国产精品露脸av在线| 欧美日韩在线中文字幕| 五月天国产精品| 成人做爰www看视频软件| 91精品国产麻豆国产在线观看 | 国产精品亚洲αv天堂无码| 精品国产一区二区三区不卡蜜臂| 欧美精品在线观看| 国产视频在线免费观看| 自拍偷自拍亚洲精品播放| 男女污污的视频| 日韩电影免费网站| 国产精品永久免费在线| 欧美成人二区| 这里只有精品视频在线观看| 日本 欧美 国产| 狠狠色丁香久久婷婷综| 中文字幕一区综合| 亚洲伊人精品酒店| 久久久精品久久久| 99久久精品国产一区色| 夜夜揉揉日日人人青青一国产精品 | 日韩av电影免费在线观看| 欧美精品日日操| 亚洲天堂av在线免费观看| 无码视频在线观看| 中文一区一区三区高中清不卡| 日本www.色| 91影院成人| 在线一区免费观看| 国产精品久久久久aaaa九色| 成人影视在线播放| 欧美老女人第四色| 成年人av电影| 波多野结衣一区二区三区| 国产免费黄色av| 精品国产一区二区三区四区| 国产女人18毛片水18精品| 免费在线观看黄色网| 日韩视频免费观看高清完整版 | 日韩午夜av| 欧美日韩系列| 国产精品视频一区视频二区| 欧美肥老妇视频| 欧美扣逼视频| 这里只有精品免费| 日韩精品一区二区av| 国产午夜久久久久| 香蕉视频色在线观看| 亚洲欧洲午夜| 亚洲精品乱码视频| 欧洲精品99毛片免费高清观看 | 日韩亚洲欧美成人| 亚洲精品一区二区三区区别| 欧美性高潮在线| 麻豆明星ai换脸视频| av不卡一区二区三区| 国产福利影院在线观看| 欧美日本久久| 日本不卡一区二区三区视频| 免费看日产一区二区三区| 97人人爽人人喊人人模波多 | 日本波多野结衣在线| 91久久一区二区| 久久久美女视频| 欧美国产精品一区二区| 国产情侣久久久久aⅴ免费| 日韩影院免费视频| 日韩成人三级视频| 日韩欧美高清| 久久另类ts人妖一区二区| 最新亚洲国产| 国产91在线播放九色快色| 搞黄网站在线观看| 亚洲天堂色网站| 人妻无码中文字幕免费视频蜜桃| 欧美日韩国产综合草草| 日韩精品久久久久久福利| 免费在线黄色片| 国产精品乱人伦| 中文字幕一区二区三区人妻电影| 国产99久久久国产精品潘金网站| 色婷婷狠狠18| 日韩中文字幕亚洲一区二区va在线| 成人区一区二区| 色综合天天爱| 亚洲高清在线观看一区| 婷婷亚洲成人| 国产精品久久久久久久久久久久午夜片| 51一区二区三区| 日本成人免费在线| a在线视频v视频| 欧美片一区二区三区| 午夜毛片在线| 在线观看国产精品91| 人妻丰满熟妇av无码区hd| 欧美一级爆毛片| 97人妻人人澡人人爽人人精品| 日本精品一级二级| 国产www在线| 精品国产鲁一鲁一区二区张丽| 国产大学生自拍| 亚洲女同一区二区| 少妇高潮在线观看| 国产精品毛片大码女人| 少妇精品无码一区二区免费视频| 久久综合九色综合欧美亚洲| 男女一区二区三区| av亚洲产国偷v产偷v自拍| 久久精品女同亚洲女同13| 成人黄色av电影| 99热超碰在线| 99久久精品国产精品久久| 波多野结衣一二三区| 成人aaaa免费全部观看| 69亚洲乱人伦| 99国产精品久| 成人精品在线观看视频| 92国产精品观看| 黑人巨大精品欧美| 国产免费久久精品| 亚洲一二三四五六区| 亚洲欧美激情在线| 免费视频一二三区| 亚洲va欧美va人人爽| 天天爽夜夜爽夜夜爽精品| 色综合一个色综合| 日韩xxx视频| 777久久久精品| 亚洲a视频在线| 日韩精品免费电影| 在线视频婷婷| 久久高清视频免费| 99热99re6国产在线播放| 97色在线视频| 青青热久免费精品视频在线18| 国产精品久久久久影院亚瑟| 日本高清不卡一区二区三| 国产精品视频一区二区三区四蜜臂| 午夜精品一区二区三区四区 | 视频精品一区二区三区| 国产一区精品在线| 精品国产一区二区三区久久久樱花| 伊人久久婷婷色综合98网| 午夜精品婷婷| wwwxxx黄色片| 国产一区二区三区日韩| 香港三级日本三级| 欧美激情在线看| 免费看一级一片| 色综合天天综合网天天看片| 7777久久亚洲中文字幕| 亚洲精品在线免费观看视频| 欧美偷拍视频| 久久不射电影网| 周于希免费高清在线观看| 国产欧美va欧美va香蕉在线| 97精品久久| 色噜噜色狠狠狠狠狠综合色一| 欧美日韩国产高清| 国产无套粉嫩白浆内谢的出处| 国产福利电影一区二区三区| 性少妇bbw张开| 亚洲精品日韩一| 天天爱天天做天天爽| 欧美成人a视频| av电影在线观看一区二区三区| 久久久久亚洲精品国产| 青青在线精品| 欧美精品成人一区二区在线观看| 欧美久久久久| av丝袜天堂网| 91色九色蝌蚪| 美女视频黄免费| 欧美久久久久久蜜桃| 丰满大乳国产精品| 久久好看免费视频| 亚洲四虎影院| 精品一区二区三区自拍图片区| 成人羞羞网站入口免费| 免费观看日韩毛片| 懂色av中文字幕一区二区三区 | 国产在线小视频| 国模精品系列视频| 欧美在线在线| 青青草原国产免费| 日本成人在线视频网站| 能免费看av的网站| 婷婷六月综合亚洲| 丰满熟妇乱又伦| 免费91麻豆精品国产自产在线观看 | 97精品国产福利一区二区三区| 99热在线这里只有精品| 成人激情免费电影网址| 欧美中文娱乐网| av影院在线免费观看| 亚洲一区二区三区乱码aⅴ| 日韩精品91| 婷婷激情四射五月天| 久久久电影一区二区三区| 在线能看的av| 日韩大片免费观看视频播放| 国产偷倩在线播放| 粉嫩av一区二区三区免费观看 | 久久伊人精品视频| 精品免费av一区二区三区| 日本不卡一区| 日本午夜精品一区二区三区电影| 精品少妇人妻一区二区黑料社区| 岛国av午夜精品| 色播色播色播色播色播在线| 欧美亚洲伦理www| 亚洲+小说+欧美+激情+另类 | 国产精品99精品无码视| 欧美va亚洲va香蕉在线| 国精一区二区三区| 国产视频99| 亚洲视频播放| 91网站免费入口| 欧美日韩在线播放| 国产在线二区| 丁香五月网久久综合| 激情另类综合| 中文字幕xxx| 在线观看日韩av先锋影音电影院| 波多野结衣一区二区| 91精品视频大全| 黄色综合网站| 成人h动漫精品一区| 狠狠躁夜夜躁人人爽天天天天97 | 欧美激情中文字幕| 国产一区二区三区成人| 久久亚洲精品国产亚洲老地址| 亚洲视频国产| 免费在线激情视频| 欧美激情综合五月色丁香小说| 国产精品亚洲欧美在线播放| 久久99久久久久久久噜噜| 午夜精品影视国产一区在线麻豆| 99视频免费播放| 中文字幕综合网| 熟妇人妻一区二区三区四区| 国产成人精品电影久久久| 99久久99久久精品国产片桃花 | 国产一区网站| 中文字幕国产高清| 亚洲成人www| 超碰在线国产| 国产精品大全| 日韩精品欧美成人高清一区二区| 搜索黄色一级片| 亚洲国产精品电影在线观看| av亚洲一区| 岛国大片在线播放| 欧美高清在线一区| 成人免费视频国产| 国产精品视频一区二区三区四| 免费福利在线视频| 天天综合日日夜夜精品| 你懂的在线免费观看| 亚洲一区二区三区毛片 | 国产精品999| 国内视频精品| 美女三级黄色片| 亚洲精品一区二区网址| 久久天堂久久|