標籤:
1)Objective-C的類定義包含兩個部分,一是類介面的聲明,二是類方法的實現。
2)所有的 Objective-C的所有編譯指示都以@打頭。
a)類介面以@interface開始以@end結束。
b)類的實現以@implementation開始以@end結束。
c)每個實現檔案必須包含它自己對應的介面檔案,這樣實現檔案中就可以安全的將 父類名刪除,將類的instance變數聲明刪除,只關注類的方法的實現;可以這樣做的原因是我們沒有必要重複介面檔案中同樣的聲明。
d)不要將源檔案中的函數參數命名成與該類成員變數同名的變數,否則函數的參數名會覆蓋類的成員變數,導致在該函數的實現中看不到類定義中的成員變數。
如在標頭檔中一個類介面聲明如下:
@interface Circle:NSObject
{
ShapeRect bounds;
ShapeColor fillColor;
}
- (void) SetFillColor: (ShapeColor) fillColor;
- (void) SetBounds: (ShapeRect) bounds;
- (void) draw;
@end //Circle
我們源檔案中類的實現如下:
@implementation Circle
- (void) SetFillColor: (ShapeColor)c
{
fillColor = c;
}
- (void) SetBounds: (ShapeRect)b
{
bounds = b;
}
- (void) draw
{
NSLog(@"drawing a circle at (%d,%d,%d,%d) in %@",bounds.x,bounds.y,bounds.width,bounds.hight,colorName(fillColor));
}
@end //circle
3)id 比較獨特,在Objective-C中它是一種泛型,該類型的變數可以儲存指向任何一個對象的指標。
4)向一個對象發送一個訊息,那麼該對象又是如何去執行該訊息所對應的代碼呢?
每個對象都包含一個指向其類的指標,而類也包含一個指標該指標指向該類的代碼地區。
這樣當對象收到一個訊息,對象通過其包含的指向找到其所屬的類對象,通過類對象的代碼區指標又可以找到與訊息對應的函數。
每個對象都包含一個名叫isa的指標,就是該指標指向類。
5)Objective-C中的基本術語:
類:類是一種結構,它用於表示一個對象的類型。對象通過isa指標來引用類來獲得與本身有關的所有資訊,尤其是像4)中所說的如何執行每種操作的代碼。
對象:也是一種結構,該結構主要包含成員變數的值和指向其類的隱藏指標(isa);同一類的所有象共用一份代碼。
執行個體:是“對象”的另外一種稱呼。
訊息:是對象可以執行的操作,用於通知對象去做什麼,一個對象能響應哪些訊息可以從介面定義中知道。
方法:為響應訊息而啟動並執行代碼。根據對象的類,訊息可以調用不同的方法。
介面:是對對象的類應該提供的特性的描述。相當於是告訴其他使用該類的客戶,該類的對象可以接收哪幾個訊息。與上面說的“訊息”術語一致。
實現:是使介面正常工作的代碼,也就是使對象訊息正常工作的代碼。與上面的“實現”術語一致。
6)有些方法名後有冒號,有些沒有呢?如何判斷什麼時候有,什麼時候沒有?
如果方法使用參數,則需要冒號;否則不需要冒號。如上面的代碼片斷。
IOS開發-Objective-C物件導向編程基礎知識