IOS開發入門

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

一.類的定義

#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成爲一個非空對象,整個來說即非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新加的一個數據類型,它是一般的對象類型,能夠存儲任何類型的方法。

發佈了59 篇原創文章 · 獲贊 5 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章