標籤:
Objective-C學習之旅 第三篇 Objective-C 類聲明,定義,執行個體,初始化
- 類聲明
//類聲明的編譯處理指示以@interface開始,以@end結尾,在這之間代碼便是類變數的定義和方法的聲明。//類的聲明和定義比其他語言複雜,這會讓剛開始學習Objective-C的人非常困惑//準確的說,其他語言如Java只需定義類而不用聲明,而Objective-C需要先聲明再定義。@interface 類名 : 父類名 { 聲明成員變數 ...}聲明方法@end
執行個體:
@interface TestCoop : NSObject {//聲明成員變數 int iMonth; int iYear; int iDay;}//聲明方法- (void) setYear: (int) iYear;- (void) primalSetData: (int)iYear :(int)iMonth :(int)iDay;- (void) setData: (int)Year iMonth:(int)iMonth iDay:(int)iDay;- (void) displayDateInfo;@end/*說明: 前面的短線/- 表示這是Objective-C方法的聲明,用來區分函數原型(C語言中)與(Objective—C中)方法聲明的方式。 短線後面是方法的傳回型別/比如( void) ,位於圓括弧中。 符號"+"的意思是,該方法是objective-c類方法 符號"-"的意思是,該方法是objecitve-c執行個體方法.*/
- 類實現
//Objective-C將類的聲明和定義完全分開,在類的聲明中,只能定義執行個體變數和方法名及類型,//具體的實現要用到@implementation這個編譯處理指示中進行。@implementation 類名執行個體方法定義...@end
執行個體:
@implementation TestCoop- (void) displayDateInfo{ NSLog(@"Today is: %d.%d.%d\n", iYear, iMonth, iDay);}//注意:類的方法實現部分函數參數不能和聲明部分一樣,就是不能和類變數同名,否則會隱藏初始變數。//比如下面的參數“year”就不能和聲明的中的“iYear”一樣- (void) setYear: (int) year{ iYear = year;}- (void) primalSetData: (int)year :(int)month :(int)day{ iYear = year; iMonth = month; iDay = day; }- (void) setData: (int)year iMonth:(int)month iDay:(int)day{ iYear = year; iMonth = month; iDay = day;}
- 執行個體化對象
int main (int argc, const char * argv[]) { @autoreleasepool { // insert code here... //NSLog(@"%d-,%s %@\n", 12, "hel123lo", @"123"); TestCoop *ptest = [TestCoop new]; [ptest primalSetData :2009 :03 :05]; [ptest displayDateInfo]; [ptest setData:2010 iMonth:06 iDay:06]; [ptest displayDateInfo]; [ptest setYear:1987]; [ptest displayDateInfo]; } return 0;}
- 類的初始化
//cocoa習慣使用alloc和init來建立對象,而不是new//使用alloc來分配記憶體,並使用init來初始化,會將這塊記憶體全部清0,bool型為NO,int型為0,指標為nil//上面的建立對象代碼改成如下:TestCoop *ptest = [[TestCoop alloc] init];
Objective-C學習之旅 第三篇