C#妹妹:阿姨,今天這麼早就出來遛狗了??
Objective-C阿姨:是啊,我的狗老了,有點失眠,起的是早點...你看看,這個狗狗特聰明特聽話
//********* 檔案Dog.h ***************#import <Foundation/Foundation.h>typedef enum{ kBlackColor, kYellowColor, kWhiteColor} Color;
@interface Dog : NSObject { Color Color; int Age;}-(void) Sound;-(void) Eat:(NSString *) food EatQty:(int) count;@end//Dog
-
////********* 檔案Dog.m ***************#import "Dog.h"@implementation Dog-(void) Sound{ NSLog(@"汪汪!");}-(void) Eat:(NSString *) food EatQty:(int) count{ NSLog(@"吃%d斤%@",count,food);}@end//Dog
C#妹妹:哇塞,雙胞胎狗狗耶....
Objective-C阿姨:啥眼神兒啊。。。,是一隻狗狗分成兩個檔案而已。。你不知道C語言有標頭檔嗎?C#妹妹:。。。仔細看看還是看得懂得。有方法,有變數。。。還有這個Dog類繼承自NSObject。Objective-C阿姨:你說的沒錯,
。每個類由兩部分組成,介面(@interface開頭 @end結尾)和實現(@implementation
開頭 @end結尾),同樣叫介面(interface),但是跟你的介面意思完全不同,這裡介面的意思是告訴編譯器這個類提供那些資料成員(執行個體變數)和方法。我這裡跟.NET的“介面(interface)”類似的概念是“協議(protocol)”,類似的事情還有很多,見到一樣的關鍵字不要想當然就好了。。
C#妹妹:恩,我基本上明白了,但是這裡還有點疑問。
-(void) Eat:(NSString *) food EatQty:(int) count{ NSLog(@"吃%d斤%@",count,food);}
如果我寫這段代碼應該是這個樣子,差別蠻大的
public void Eat(String food, int eatQty){ Console.WriteLine("吃{1:0}斤{0}", food, eatQty); }
Objective-C阿姨:是的,最大的區別應該在方法的參數上。我的方法是很有特色的,
方法的名稱和參數是合在一起的,比如調用我的方法需要這樣操作
Dog *d=[Dog new];[d Sound];[d Eat:@"骨頭" EatQty:3];
如果是C#的話應該是這樣調用的
Dog a = new Dog();a.Sound();a.Eat("骨頭", 5);
看到區別了嗎?如果參數很多的話,通過My Code可以很容易分辨每個參數的意思
C#妹妹:恩,果然很方便(心裡想:真囉嗦,還是智能感知方便啊。。。),另外怎麼每個語句都用中括弧擴起來啊?
Objective-C阿姨:是的,在我這裡通知對象執行某種方法稱為“發送訊息”,[d Sound]表示向d對象發送Sound訊息,其實就是調用執行個體方法了。你知道My Code副檔名為啥是m嗎?因為是message的縮寫。
C#妹妹:方法前面的“-”表示什麼意思?可以有“+”號嗎?
Objective-C阿姨:“+”和“-”都有的,
“-”表示執行個體方法,“+”表示類的方法,也就是你的靜態方法。
C#妹妹:你沒有存取修飾詞嗎?
Objective-C阿姨:我可以用成@public、@protected、@private 作為存取修飾詞,修飾執行個體變數(成員變數),預設是@protected。但也只有成員變數有存取修飾詞,類變數、類方法、成員方法是沒有存取修飾詞的,所有的方法都是公有的, 所有的類變數都是私人的。
C#妹妹:這就明白了,真是Objective-C雖老,五髒俱全啊!!!
Objective-C阿姨:
C#妹妹:來狗狗,吃點東西。。。。。
[d Sound]; [d Eat:@"骨頭" EatQty:1];
狗狗:
C#妹妹:,再喂點肉肉。。。。。
[d Sound]; [d Eat:@"肉" EatQty:2];
狗狗:
C#妹妹:,嘿嘿,都說狗改不了吃屎,來點猛的吧。。。。。。。。
[d Eat:@"大便!!!!!!" EatQty:999];
狗狗:。。。。。。。。。。。
C#妹妹:Objective-C阿姨,你的狗狗果然很乖呀。。。88
-
各位同學,本人學習Objective-C時間很短,學習Objective-C其實不是為了Mac、iPhone開發,並沒有實用,
其實是一個C#使用者學習Objective-C的學習筆記,學習的確切目的是協助我理解C#,畢竟沒有比較是不可能知道所謂C#的特點的
請大家批判的眼光看這個東西,如果發現和其他文章、書籍、評論、資料有衝突,請盡量以其他文章為準。並給我留言
也邀請所有高手積極拍磚,我正好用來蓋房子~~~
《C#妹妹和Objective-C阿姨對話錄》
(01)認識Objective-C--初次見面的問候
(02)這就是類--阿姨的狗狗
(03)NSString--再遇狗狗
(04)記憶體回收基礎--拆遷隊那點事
待續⋯⋯