以一段程序開始java
#import <Foundation/Foundation.h> @interface MyClass:NSObject - (void) method; @end @implementation MyClass - (void) method { NSLog(@"Hello,OC!\n"); } @end int main() { /* 初始化 */ MyClass *myClass = [[MyClass alloc]init]; /* 調用方法 */ [myClass method]; return 0; }
終端輸出結果:函數
分析程序結構:spa
#import <Foundation/Foundation.h>
這是一段預處理指令,告訴OC編譯器,在編譯代碼前加入Foundation 下的 Foundation.h文件
指針
@interface MyClass:NSObject - (void)method; @end
這段代碼以@interface開始以@end結尾,定義了一個接口(MyClass),這個接口繼承NSObject這個類,NSObject類在OC中是全部類的基類。(優勢相似與java中的基類Object,可是要注意任何類繼承NSObject時必須加上":NSObject").code
其中 - (void)method; 是聲明瞭一個 沒有返回值的、不帶參數的實例方法。繼承
"-" 是說明是這個類的實例方法,只有這個類的實例才能調用。聲明方法還能夠用 "+", "+"是說明是這個類的類方法,這個類能夠調用。接口
"(void)" 是說明這個方法的返回是是void(能夠說是沒有返回值)編譯器
"method"是這個方法的名稱。it
值得注意的是方法結尾沒有一對括號,不少人剛開始時習慣加上()io
@implementation MyClass - (void)method{ NSLog(@"Hello,OC!\n"); } @end
這段代碼以@implementation開始以@end結尾,定義了MyClass類,這個類是上面MyClass接口的實現類。
這個類中的method方法是接口的實現方法。{}內是方法的實現內容,NSLog函數是個打印輸出函數。
int main() { /* 初始化 */ MyClass *myClass = [[MyClass alloc]init]; /* 調用方法 */ [myClass method]; return 0; }
main函數,程序的入口。
方法的調用方式:
[實例 實例方法名];
[類名 類方法];
分析 這段初始化方法MyClass *myClass = [[MyClass alloc]init];
[MyClass alloc] 調用類方法,由這段代碼能夠猜出來,這個類方法返回值是個MyClass的實例,用指針變量*myClass 接收,接着這個實例調用 init 方法初始化了這個實例。這樣寫這個方法就好理解點:
MyClass *myClass = [MyClass alloc]; [myClass init];
[myClass method]調用實例方法。
小結:
一個基本的OC程序包含: 預處理指令,接口,實現類,方法,變量。