偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

初學者必備文檔: Objective-C入門學習

移動開發(fā) iOS
Objective-C是C語言ANSI版本的超集,支持和C相同的基本語法。用C代碼,你可以定義頭文件和源碼文件,以從詳細實現(xiàn)的代碼中分離出公開的聲明。

Objective-C入門學習是本文要介紹的內容,本文檔沒有教授任何有關于C語言的知識。如果你還不熟悉C語言,閱讀本文之前應該學習一下C語言的基礎知識。閱讀本文前,你也要了解面向對象的基本概念。

對象的使用以及面象對象設計模式都是設計Cocoa程序的基礎,理解它們是如何相互影響的是編寫你的應用的關鍵。了解這些概念,請查看  使用Objective-C進行面向對象編程。另外, 查看 Cocoa基本原理入門 可以了解有關在Cocoa中用到的設計模式

如果你已經熟悉C語言,并且之前使用過面向對象語言編寫過程序,下面的內容將會幫助你學習Objective-C的基礎語法。許多傳統(tǒng)面向對象的思想,比如封裝、繼承、多態(tài),都會在Objective-C中體現(xiàn)。雖然也有一些重要的不同點,但這些不同點都會在這篇文章中提到,如果需要有更多詳細信息可用。

有關Objective-C的語言和語法的詳細信息, 可以查閱  Objective-C編程語言.

  1. src="/CuteSoft_Client/CuteEditor/Images/anchor.gif">  

Objective-C: C語言的超集

Objective-C是C語言ANSI版本的超集,支持和C相同的基本語法。用C代碼,你可以定義頭文件和源碼文件,以從詳細實現(xiàn)的代碼中分離出公開的聲明。 Objective-C頭文件下面列出的擴展名  Table 1-1.

  1. src="/CuteSoft_Client/CuteEditor/Images/anchor.gif">  

Table 1-1  Objective-C代碼的文件擴展名(單擊放大)

 Objective-C入門學習

當你想在你的代碼中包含頭文件時,你可以使用 #import 指令。 它比較像 #include,除了它必須要確定相同文件不能被包含多次。 Objective-C的示例和文檔都更喜歡使用 #import, 你的代碼應該也這樣。

和大多數(shù)其它面向對象語言一樣,Objective-C里的類也提供基本的結構,用來封裝帶有行為的一些數(shù)據(jù)。一個對象是一個類的運行實例,包含類中聲明變量的實例在內存中的復制,以及指向該類的方法。

Objective-C中類的定義,要求兩個明顯的部分:接口和實現(xiàn)。接口部分包含類的聲明、定義成員變量,及與此類關聯(lián)的方法。接口通常在a .h 文件里。實現(xiàn)部分包含類的方法實際代碼。實現(xiàn)通常在 a .m 文件里。

圖1-1 展示聲明MyClass類的語法,它繼承自Cocoa的基類  NSObject。這個類的聲明開始于 @interface 編譯指令,結束于 @end 指令。僅跟著類名的(以冒號分割)是父類名。類的實體變量(有時簡稱ivars,在一些其它語言中稱作成員變量)聲明在以大括號({和})括起來的代碼塊中。實體變量后面是類的方法聲明列表。以分號做為每個實體變量和方法的結束標記。

  1. src="/CuteSoft_Client/CuteEditor/Images/anchor.gif"> 

 圖1-1  定義一個類 

  1. src="/CuteSoft_Client/CuteEditor/Images/anchor.gif">  

小提示: 這個接口只聲明了方法,類也可以聲明 屬性。了解屬性的更多信息, 請查看 “聲明屬性”.

Objective-C支持包含對象的強弱兩個類型的變量。在變量聲明時,強類型的變量包含類名,弱類型的變量使用類型  id 代替對象。弱類型變量在像集合類中使用頻繁,在一個集合中的對象的實際類型可能是未知的。如果你使用過強類型的語言,你可能會認為使用弱類型會引起問題,但是在Objective-C程序中它們實際上提供了很大的靈活性和更強大的動態(tài)性。

下面的例子展示了強類型和弱類型變量的聲明格式:

  1. MyClass *myObject1; // 強類型  
  2. id myObject2; // 弱類型 

注意在第一個聲明里的 * 號。在Objective-C中,對象的引用叫指針。如果你對指針沒有很清晰的認識,不用擔心,不是必須要成為一個指針專家才能使用Objective-C進行編程的。你只要記住在聲明強類型對象的變量名前加上  *  就可以了。 弱類型 id 本身就意味著是個指針。

  1. src="/CuteSoft_Client/CuteEditor/Images/anchor.gif">  

方法和通信

Objective-C中的類可以聲明兩種類型的方法:實體方法和類方法。一個實體方法是在這個特定類的實例中才能執(zhí)行的方法,換句話說,在調用實體方法前,你必須首先要創(chuàng)建這個類的實例。類方法,相對的,不需要創(chuàng)建實例。當然更可以在創(chuàng)建實例之后調用。

方法的聲明由方法的類型標識符、一個返回值類型、一個或多個簽名關鍵字、參數(shù)類型和名稱信息組成。   圖1-2 展示實體方法  insertObject:atIndex:的聲明格式。

  1. src="/CuteSoft_Client/CuteEditor/Images/anchor.gif"> 

 圖1-2  方法聲明的語法 

 Objective-C入門學習


 
聲明開始于減號(-) ,減號用來標識這是一個實體方法。這個方法的實際名稱 (insertObject:atIndex:) 是所有簽名關鍵字的拼接,包括冒號。冒號聲明了當前的參數(shù).如果方法沒有參數(shù),你就可以省略第一個簽名關鍵字。在這個例子中,該方法有兩個參數(shù)。

當你想調用這個方法時,你可以通過向對象 通信 。 通信內容是方法簽名和方法要求參數(shù)信息。

信息是用中括號 ([ 和 ])包裹的。在中括號里面,接收信息的對象在左邊,信息(包括信息要求的參數(shù))在右邊。例如,發(fā)送信息insertObject:atIndex: 到變量名為 myArray 的對象,你會用到下面的語法:

  1. [myArray insertObject:anObject atIndex:0]; 

為了避免聲明多個局部變量來保存臨時結果, Objective-C允許你嵌套信息。來自每個嵌套信息中的返回值,可以被用做參數(shù)、目標、或另一個信息。例如,你可以用信息來代替前面例子中任意使用過的變量。從而,如果你有一個叫  myAppObject 的對象,它有訪問數(shù)組對象和將對象插入數(shù)組的方法,你可以將前面的例子寫成像下面這樣:

  1. [[myAppObject theArray] insertObject:[myAppObject objectToInsert] atIndex:0]; 

Objective-C也提供用句點來調用 存取器方法。存取器方法獲取和設置一個對象的狀態(tài),典型的格式為  -(type)propertyName 和 -(void)setPropertyName:(type)。使用句點語法,你可以將前面的例子重寫成:

  1. [myAppObject.theArray insertObject:[myAppObject objectToInsert] atIndex:0]; 

你也能使用句點語法賦值:

  1. myAppObject.theArray = aNewArray

用不同語法寫也比較簡單,

  1. [myAppObject setTheArray:aNewArray];. 

盡管前面的例子都是發(fā)送信息給一個類的實例,你也可以發(fā)送信息到類本身。當你要通信到一個類,你指定的方法必須被定義成一個類方法,而非實體方法。

典型的,你使用類方法來創(chuàng)建類的新實例,或訪問有關此類的一些共享信息。類方法的聲明語法除了一點不同,其它完全和實體方法一樣。用加號(+)來代替用減號(-)作為方法類型的標識符。

下面的例子就是來說明如何使用類方法作為一個類的工廠方法。在這個例子中,方法 array 是類 NSArray 的類方法—繼承自 NSMutableArray— 它用于分配和初始化該類的新實例并將它的返回到代碼中。

  1. NSMutableArray *myArray = nil; // nil等同NULL  
  2. // 創(chuàng)建一些新數(shù)組并賦給變量myArray。  
  3. myArray = [NSMutableArray array]; 

清單1-1 展示類了在前面例子中 MyClass 類的實現(xiàn)代碼。像類的聲明一樣,類的實現(xiàn)通過兩個編譯指令識別 —這里, @implementation 和 @end。這些指令提供編譯器需要的范圍信息,來定位相對應類的封閉方法。方法的聲明要匹配接口中相應的聲明,不包括代碼塊里的內容。

  1. src="/CuteSoft_Client/CuteEditor/Images/anchor.gif">  

清單1-1  一個類的實現(xiàn)

 Objective-C入門學習

  1. @implementation MyClass  
  2.    
  3. - (id)initWithString:(NSString *)aName  
  4. {  
  5.  self = [super init];  
  6.  if (self) {  
  7.  name = [aName copy];  
  8.  }  
  9.  return self;  
  10. }  
  11.  
  12. + (MyClass *)createMyClassWithString: (NSString *)aName  
  13. {  
  14.  return [[[self alloc] initWithString:aName] autorelease];  
  15. }  
  16. @end  
  17. src="/CuteSoft_Client/CuteEditor/Images/anchor.gif"> 

聲明屬性

聲明屬性是代替聲明及簡單實現(xiàn)存取器方法的方便形式。

在類接口里,可以包含屬性聲明和方法聲明?;镜亩x用 @property 編譯指令,之后是類型信息和屬性名稱。你也可以定制配置屬性,比如定義存取器方法如何執(zhí)行。下面的例子展示一個簡單屬性的聲明:

  1. @property BOOL flag;  
  2. @property (copy) NSString *nameObject; // 在賦值時復制對象。  
  3. @property (readonly) UIView *rootView; //聲明一個只讀方法 

每個可讀屬性指定一個與該屬性同名的方法。每個可寫屬性指定一個額外的方法,格式為  setPropertyName, 屬性名的首字母要大寫。

在你的類的實現(xiàn)里,你可以使用 @synthesize 編譯指令來要求編譯器依照聲明規(guī)格創(chuàng)建方法:

  1. @synthesize flag;  
  2. @synthesize nameObject;  
  3. @synthesize rootView; 

你可以合并 @synthesize 語句到一行中,如果你愿意:

  1. @synthesize flag, nameObject, rootView; 

從實際上說,屬性減少了你不得不寫的冗長代碼的數(shù)量。因為大多數(shù)存取器方法都是以類似的方式執(zhí)行的,屬性去掉了類中公開的每個屬性實現(xiàn)讀寫方法的重復。相反的,你只要指定你想使用屬性的行為,會在編譯時生成實際的讀寫方法。

要了解如何在你的類中聲明屬性,請查看  “聲明屬性” 在  Objective-C編程語言里。

字符串

作為C語言的超集,Objective-C和C語言一樣在指定字符串上支持相同的約定。換句話說,字符用單引號包裹、字符串用雙引號包裹??墒荗bjective-C框架典型的是不使用C語言式的字符串。他們以  NSString 對象的方式傳遞字符串。

 NSString  類提供一個對象封裝字符串,這樣可以具有你想要的所有優(yōu)點,包括為任意長度的字符串創(chuàng)建內存管理、支持Unicode、  printf-式的格式化工具集,還有更多。因為這樣的字符串使用很普遍,Objective-C提供一個快捷方式來根據(jù)常量創(chuàng)建  NSString 對象. 要使用這種快捷方式,你必須在普通雙引號字符串前加  @ 符號,下面的例子就做了展示:

  1. NSString *myString = @"My String\n";  
  2.    
  3. NSString *anotherString = [NSString stringWithFormat:@"%d %@", 1, @"String"];  
  4.    
  5. // 根據(jù)C式字符串創(chuàng)建Objective-C字符趾  
  6.    
  7. NSString *fromCString = [NSString stringWithCString:"A C string" encoding:NSASCIIStringEncoding]; 

協(xié)議

一個協(xié)議聲明的方法可以被任意類實現(xiàn)。協(xié)議本身沒有類。他們只是簡單地定義一個接口讓其它對象可靠的實現(xiàn)。當你在你的類里實現(xiàn)一個協(xié)議的方法時,就可以說你的類符合那個協(xié)議了。

協(xié)議被頻繁用于為 委拖 對象指定接口??磪f(xié)議、委托以及其它對象之間的相互作用的最好方式,就是看一個例子。

 UIApplication 類實現(xiàn)一個應用程序要求的行為。不用強迫你實現(xiàn)子類 UIApplication  來接收有當前程序狀態(tài)的簡單通知。而是 UIApplication  類通過調用它分配的委托對象的具體方法來發(fā)送那些通知。實現(xiàn) UIApplicationDelegate 協(xié)議方法的對象能接收那些通知,并提供恰當?shù)拇饛汀Mㄟ^將協(xié)議的名稱用“<>”包裹起來放到它繼承的類后面,來指定你的類遵循或采用的協(xié)議。你不用去聲明你實現(xiàn)協(xié)議的方法。

  1. @interface MyClass : NSObject <UIApplicationDelegate, AnotherProtocol> {  
  2. }  
  3. @end 

協(xié)議的聲明看起來比較類似一個類的接口,不同的是協(xié)議沒有父類也不能定義實體變量。下面的例子展示了含有一個方法的簡單協(xié)議:

  1. @protocol MyProtocol  
  2. - (void)myProtocolMethod;  
  3. @end 

在很多委托協(xié)議的示例中,采用一個協(xié)議類似實現(xiàn)協(xié)議中定義的方法。有些協(xié)議要求你明確說明你支持的協(xié)議,協(xié)議可以指定必選和可選方法。當你要將你的開發(fā)推進到更深層次,無論如何,你應該花稍多時間去學習協(xié)議及如何使用它們--  “協(xié)議” in  Objective-C編程語言.

  1. src="/CuteSoft_Client/CuteEditor/Images/anchor.gif">  

更多信息

上述內容主要是想讓你熟悉Objective-C語言的基礎。這里介紹的主題覆蓋了你通讀文檔時最可能遇到的語言功能。這些內容不是這門語言的僅有功能,我們鼓勵你閱讀有關這門語言的更多內

小結:初學者必備文檔: Objective-C入門學習的內容介紹完了,希望通過本文的學習能對你你有所幫助!

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

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 19:01:18

Objective-C

2011-08-11 10:50:08

xcode調試文件

2011-08-29 15:45:59

Lua函數(shù)

2020-08-16 13:10:46

TensorFlow深度學習數(shù)據(jù)集

2011-08-01 11:49:05

Objective-C

2011-08-23 14:01:03

LUA

2011-08-24 09:54:05

Lua字符春交互

2011-08-24 17:19:20

Lua源文件

2011-08-24 17:05:01

Lua

2011-05-11 15:58:34

Objective-C

2011-08-15 17:06:01

Objective-CNSLog

2011-09-08 10:38:37

Widget

2010-05-12 17:36:44

MySQL初學者

2011-07-06 14:41:34

Objective-C

2020-09-08 19:03:41

Java代碼初學者

2011-08-10 16:44:56

iPhone代理設計模式

2010-01-15 19:05:42

學習C++
點贊
收藏

51CTO技術棧公眾號