20世紀80年代就出現了Objectvie-C. 千年萬精油 hello Objective-C #import<Foudation/Foundation.h> //告訴編譯器查看Fondation架構中的Foudation.h標頭檔。 int main(int argc,const char*arg【】) { NSLog(@“hello,Object-C!”); // NSLog()接受一個字串作為其第一個參數作為其第一個參數, 該字串包含格式說明符 return(0); }//main .m----object-C .c-----c編譯器 .cpp-----C++ .m代表message 所有這些編譯工作由GCC(GNU Compiler Colection) NS首碼說明函數來自cocoa工具包。 @說明引用的應該作為Cocoa的NSString元素來處理 NSString功能: 1告知其長度;2將自身與其他字串比較;3將自身轉換為整形值或浮點值。 BOOL不是true和false而是yes和no BOOL areIntsDifferent(int tihng1 int thing2) //接受兩個整形參數,返回BOOL值。、 { if(thing1==thing2){ reture(NO); }else{ return(yes); } NSString *boolString(BOOL yesNo){ //boolString()返回的類型是一個指向NSString的指標 if(yesNo==No){ return(@"No");} else{ return(@"Yes") } } int main(int argc,const char *argv[]) { BOOL areTheyDifferent(5.5); NSLog(@"are%d and%d differnt?%@", //%d=5,%@=boolString(areTheyDifferent) 5.5.boolString(areTheyDifferent)); BOOL areTheyDifferent(23.542; NSLog(@"are%d and%d differnt?%@", 23.42.boolString(areTheyDifferent)); return(0); )oop 1.Indirection. #import<Foundation/Foundation.h> int main(int argc,const char*arg【】) { NSLog(@“The numbers from 1 to 5:”); int i; for(i=1;i<=5;i++){ //添加一個間接層,用count代替5,這樣就可以方便修改,變數的間接。 NSLog(@"%d\n",i); } return(0); } 2 #import<Foundation/Foundation.h> int main(int argc,const char*arg【】) { const char *words【4】={"abcde","def","jxyzs","kl"}; int wordCount=4; int i; for(i=0;i<wordCount;i++) { NSLog(@"%s is %d characters long",words[i],strlen(words[i])); } return(0); } 3.現在可以開始oop 了 類:一種結構,表示對象的類型; 對象:一種結構,它包含值和指向其他類的隱藏指標; 執行個體:比如circle對象也可以稱作circle類的一個執行個體; 訊息:對象可以執行的操作; 方法:響應訊息而啟動並執行代碼;訊息可以調用多個方法; 介面:是對象的類應該提供特性的描述; 實現:是使介面正常工作的代碼; 。。下面來一個標準的OOP #interface Circle:NSObject //這是為命名為Circle的新類定義的介面。 { ShapeColor fillColor; ShapeRect bounds; } -(void)setFillColorshapeColor)fillColor; //(傳回值) 方法 :(參數類型 )參數 -(void)setBoundsshapeRect)bounds; -(void)draw @end #implementation Circle //定義類的公用介面。 -(void)setFillColorshapeColor) 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.widh,bounds.height, colorName(fillColor); } @end int main(int argc,const char *argv[]) //執行個體化, { id shapes[3]; ShaeRect rect0={0.0.10.30}; shapes[0]=[Circle new]; [shapes[0] setBounds: rect0]; [shapes[0] setFillColor:kRedColor]; ShaeRect rect1={30.40.50.36}; shapes[1]=[Rectangle new]; [shapes[1] setBounds: rect1; [shapes[1] setFillColor:kGreenColor]; ShaeRect rect2={15.19.37.29}; shapes[2]=[OblateSphereoid new]; [shapes[2] setBounds: rect2]; [shapes[2] setFillColor:kBlueColor]; drawShapes (shapes.3); return(0); } |