1.#import与#include类似,但是在编译相同的单元时不会被多次包括进行.
2.编辑对象
/* Speak.h */
#import <objc/Object.h>
@interface Speak: Object {
char* string;
}
- setString: (char*) str;
- say;
- free;
@end
Object类是Objective-C类的超类.
Speak类由编译程序指示字@interface和@end包围.定义内部是花括号包围的代码块.
数据块后是类方法定义.每个方法用减号说明.
/* Speak.m */
#import "Speak.h"
@implementation Speak + new {
self = [supper new];
[self setString: ""];
return self;
}
- setString: (char*) str {
string = str;
return self;
}
- say {
printf("%s/n", string);
return self;
}
- free {
return [super free];
}
/* hellowobject.m */
#import <objc/Object.h>
#import "Speak.h" main() {
id speak;
speak = [Speak new];
[speak setString: "hello, world"];
[speak say];
[speak free];
}
编译器指示字@implementation说明源文件包含的是Speak类方法实现.
减号开头的是实例方法,只能被已经存在的对象调用; 任何时候都可以调用+开头的方法. 大多数方法返回的类型是id, 因此都返回的是self,这是对象自己引用自己的一种方法.
3.编译方法
gcc -Wno-import hellobject.m Speak.m -lobjc -o helloobject
4.预定义类型
BOOL, id, IMP, nil, Nil, SEL, STR
5.生成新的接口声明
gcc -Wno-import -gen-delcs -c Speak.m 就会生成w.decl内容如下:
#import <objc/Object.h> @interface Speak: Object { char* string; } - setString: (char*) str; - say; - free; + new; @end