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