IOS開發入門

來源:互聯網
上載者:User

今天的內容是類,方法的定義與實現

一.類的定義

#import  <Cocoa/Cocoa.h>  //    1

@interfaceStudent : NSObject  //   2

{

      int age ;

      NSString *name ;     // 3

}

@property(nonatomic , retain) NSString *name ; //  4

@property(nonatomic , retain) int age ;

 

-( id )initName : (NSString *) aName andAge : (int) aAge ;  //5

-( id )inttName : (NSString *) aName ;  // 6

-(void)sayHello ;

 

@end                    // 1

注釋:

  1. #import 告訴前置處理器,將標頭檔的內容包含到本檔案中. OC 中的import 能保證標頭檔只會被包含一次 .

  2. @interface關鍵字:聲明一個Student類。@end 結束聲明.

冒號:表示繼承 後面跟的是父類.  

NSObject是大多數對象都會用到的記憶體管理,和初始化架構,以及反射和類型操作. 相 當於Object。

NS是NextSTEP縮寫,表示這個函數來自Cocoa工具包。

  1. 聲明全域變數 , 與C中一樣。

  2. property關鍵字:設定成員變數的屬性(有讀/寫,賦值assign,retain,copy ,以及對多線程的支援nonatomic)。

  3. 聲明一個方法,格式是  –(傳回值) 方法關鍵字1 : (參數類型)參數名 方法關鍵字2 : (參數類型)參數名 …… (在讀方法的時候就可以先找方法關鍵字來確定參數)。

- 減號是執行個體方法, + 是類方法

 

 

二.類的實現

#import  “Student/Student.m”  

#synthesizename ;                                     //1

#synthesizeage ;

 

@implementationStudent    // 2

 

-(id)initName : (NSString *) aName andAge : (int) aAge    // 實現方法

{

      if (self =[super init])   // 3

      {

             self.name = aName ;

             self.age = aAge ;     

}

return self ;            

}

-( id )initName : (NSString *) aName     // 4

{

      self = [self  initName : aName andAge : 0];

      return self ;

}

-(void)sayHello

{

      NSLog (”%@”,Hello World) ;   // 5

}

@end

注釋:

  1. #synthesize關鍵字: 根據@property設定,自動產生成員變數相應的存取方法,從而可以使用點操作符來方便的存取該成員變數 。

  2. @implementation 關鍵字,表明類的實現 @end 結束

  3. self 關鍵字 :類似於java中的this,是隱藏參數,指向當前調用方法的類。

super 關鍵字 :調用父類的方法。

self = [superinit]  這裡不是判斷self與[superinit]是否相等,而是判斷是否可以成功初始化。[super init]:父類初始化成功的話,通過=給self,這樣self成為一個非Null 物件,整個來說即非false(非NO)。

 

3.  另一個初始化方法中調用已有的初始化方法  這種概念被稱為Designated Initializer.

4.  NSLog是OC中的標準輸出, 附加輸出當時日期, 時間, 應用程式名稱 . 使用NSLog()輸出任意對象的值時,都會使用%@格式說明。在使用這個說明符時,對象通過一個名為description的方法提供自己的NSLog()格式。

%i  BOOL值.

 

三.對象的產生與方法的調用

 

#import<Foundation/Foundation.h>

#import “Student/Student.h”

 

int main( int argc , const char * argv[] ) //  1

{

      NSAutoreleasePool *pool =[[NSAutoreleasePool alloc] init ] ; // 2

      Student *s1 =[[Student alloc] initName :@” zhangsan ”

andAge : 15] ;  // 3

      [s1 sayHello] ;  // 4

      [s1 realease]

      [pool drain]  //

      return 0 ;  

}

注釋:

  1. int argc , const char * argv[]  :  argv[0] 接受程式名,以後的參數命令列跟的是使用者輸入參數, argc則是紀錄了使用者在命令列輸入了幾個參數

  2. 建立一個自動釋放池 pool

  3. 建立一個對象 格式 類名 *對象名= [[類 alloc] init初始化資料] ;

alloc是個函數,作用是返回一個指向n個連續字元儲存單元的指標,alloc函數的調用者可以利用該指標儲存字元序列,在這裡是建立一個記憶體空間給對象,並將全部資料初始化為0。

init 是函數,作用是負責為類中的成員變數賦值。和一般方法沒有區別,只是在開頭加上了init。

4.  方法調用 格式 [對象名 方法名] 類似於 對象名.方法名;

 

 

PS :

 

  1. BOOL  : 布爾類型,1或者YES為真, 0 或者NO 為假。

  2. @” ” 表示將@後的字串當成一個NSString 對象。

  3. id 這是ObjC新加的一個資料類型,它是一般的物件類型,能夠儲存任何類型的方法。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.