以一段程序开始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程序包含: 预处理指令,接口,实现类,方法,变量。