objective -c 特性筆記

1.@interface Circle :NSObject

  • 藉口關鍵字:interface
  • @interface Circle : 名爲Circle的新類定義的接口。
  • 繼承自  NSObject;
2{ }的理解
  • 其中包含的是類的數據成員;
  • 每次創建Circle對象時,都將包含這兩個實例變量;
  • 注意:fillcolor,bounds 稱爲類的數據成員;而Circle類對象的值稱爲實例變量。
3.方法聲明
  • (void) setFillColor   :  (ShapeColor)    fillColor    ;
  • 方法類型      返回類型  方法名   方法接受的參數  參數的類型       參數名

4中綴符
  1. 利用中綴符,可將方法的名稱和參數合在一起;
  2. 調用帶一個參數的方法:
  3. [circle setFillColor : kRedcolor];
  4. 調用帶兩個參數的方法:
  5. [circle setFillColor:kRedcolor setBounds:rect];                                                                                                                                                          
5.
1.@implementation
一個編譯器指令,表明將爲某個類提供實現代碼。
2.接着是各個方法的定義,不必按聲明順序出現,甚至可以實現聲明中沒有的方法。
3.@interface  和@implemention 間的參數名不同是正確的,且需要不同。
聲明處:-(void) setFillColor :(ShapeColor) fillColor;
實現處:-(void) setFillColor :(ShapeColor) c
{
fillColor = c;
}
在實現中,我們必需區分參數名稱和實例變量的名稱,最簡單的方式就是我們將參數重新命名。
4.oc調用方法時,一個隱藏參數(self)將被傳遞給接收對象,這個參數引用的就是該接收對象。該參數傳遞過程是祕密和自動的,程序員不必實現。即類中的方法可以直接使用其實例變量的值。

6.實例化:爲對象分配內存,並在這些內存中保存一些默認值。
  • 向相應的類發送new消息,創建對應的對象。
  • new方法等價於alloc+init。
7.id類型變量
  • id可以接收指向任意類型的指針。
  • 在未接受指針之前,不能調用方法。
8.實現類的三個步驟
  • 類接口
  • 類實現
  • 使用類

類接口最爲重要;
超類,數據成員,方法;
超類常使用NSObject,NSObject的子類。

9.

NSLog(@"%@“);


第一個@ 表示後面輸出一個NSString類型的對象。

後一個%@ 表示oc的一個任意類型的對象。

10.

Car *car;  //定義了一個Car對象的指針

car =[Carnew];//生成了一個Car對象,包含5個空指針,並把地址賦給Car對象指針  

new alloc init 若要改變初始化狀態,對init進行重寫。

11.
init 對所有數據成員進行初始化。
有兩個數據來源,一個來自超類,一個自身新增。

if(self = [ super init ])
  • 此處調用消息[super init],讓超類完成初始化;
  • init方法返回值(id類型)描述了被初始化的對象。
  • 將[super init]的結果賦給self是oc的慣例,以防止超類在初始化過程中返回的對象不同於原先創建的對象。
12.區分new,init 函數

[engine new]  = [[engine alloc]init]
  • alloc 用後,內存會被清零
  • 調用init後,讓對象處於可用狀態。
13.
NSLog(@"%@",engine);    //cocoa類中添加description方法就可自定義nslog()如何輸出一個對象。
結果是:i have an engine
@interface Engine : NSObject 
{
    
}

//-(void)print;
-(NSString *)description;

@end

@implementation Engine

-(NSString *)description
{
    return (@"i have an Engine");
}

//-(void)print
//{
//    NSLog(@"this is an Engine");
//}

@end    //Engine
14.
存取方法(accessor method)
用來讀取或改變對像特定屬性的方法
修改方法(mutator method)
用來改變對象狀態的方法
是類的對象方法。
理解:
setter:爲對象中某屬性賦值;
getter:提供讀取對象屬性的途徑;
對其他對象屬性進行操作時,應該始終使用對象所提供的存取方法,而不直接操作其他對象的屬性。
存取方法常成對出現,也可不成對出現。

使用規則:
setter: set +屬性名稱
getter: 屬性名稱

不使用get前綴,因爲其在cocoa中有特殊含義:把指針當作參數傳入函數,來獲取返回值。

對數組操作存取方法的實質:
  • 對數組操作,需要數組首地址、數組下標;//數組首地址直接訪問類的數據成員,數組下標是參數。
  • 在方法中確定數組首地址、下標。

15.類的對象的方法的數據來源有兩個
  • 直接訪問類的數據成員
  • 參數
16.return 和exit 的區別

exit()
是一個函數,結束一個進程,將刪除進程使用的內存空間,並返回錯誤信息。

exit 不需要考慮函數返回值類型;

exit (0)--表示正常退出,非0表示非常正退出。
不能輕易使用。

return
返回函數值,是關鍵字

16.父類指針可以指向子類對象

17.導入頭文件
有兩種不同的方法
  • 尖括號的語句用來導入系統頭文件;
  • 帶引號的語句則說明導入項目本地頭文件;

本章總結:

  1. 面向過程式編程:函數第一,數據第二
  2. 面向對象編程    :數據第一,函數第二

  3. 消息,方法,self指針及其三者關係
  4. 向類發送new消息可創建新對象
  5. 好的軟件實體,應對擴展開放,對修改關閉


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章