以一段程序開始說明Objective-C 基本的程序結構。
#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;
}
終端輸出結果:
分析程序結構:
#import <Foundation/Foundation.h>
這是一段預處理指令,告訴OC編譯器,在編譯代碼前加入Foundation 下的 Foundation.h文件
@interface MyClass:NSObject
- (void)method;
@end
這段代碼以@interface開始以@end結尾,定義了一個接口(MyClass),這個接口繼承NSObject這個類,NSObject類在OC中是所有類的基類。(優點類似與java中的基類Object,但是要注意任何類繼承NSObject時必須加上":NSObject").
其中 - (void)method; 是聲明了一個 沒有返回值的、不帶參數的實例方法。
"-" 是說明是這個類的實例方法,只有這個類的實例才能調用。聲明方法還可以用 "+", "+"是說明是這個類的類方法,這個類可以調用。
"(void)" 是說明這個方法的返回是是void(可以說是沒有返回值)
"method"是這個方法的名稱。
值得注意的是方法結尾沒有一對括號,很多人剛開始時習慣加上()
@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程序包含: 預處理指令,接口,實現類,方法,變量。
Objective-C中@property的所有屬性詳解 http://www.linuxidc.com/Linux/2014-03/97744.htm
Objective-C 和 Core Foundation 對象相互轉換的內存管理總結 http://www.linuxidc.com/Linux/2014-03/97626.htm
使用 Objective-C 一年後我對它的看法 http://www.linuxidc.com/Linux/2013-12/94309.htm
10個Objective-C基礎面試題,iOS面試必備 http://www.linuxidc.com/Linux/2013-07/87393.htm
Objective-C適用C數學函數 <math.h> http://www.linuxidc.com/Linux/2013-06/86215.htm
好學的 Objective-C 高清PDF http://www.linuxidc.com/Linux/2014-09/106226.htm