第六章原文件组织
一、拆分接口和实现部分
Objective-C的源代码被分为两部分:接口@interface和实现@implementation
接口用来提供类的公共描述,包含了所有使用该类所需的信息,现实中文件名.h结尾
实现告诉编译器如何工作,这部分代码实现了接口中声明的方法,现实中.m结尾、
以.mm结尾会被识别为Objective-C++代码,这样可以同时使用C++和Objective-C
二、导入头文件
实现一个接口时应首先导入该类的接口,即import "Tire.h"
如果看到Cannot find interface definition for 类名就是忘了导入接口声明
导入头文件有两种方法:使用引号或者使用尖括号
#import <Cocoa/Cocoa.h> 尖括号是用来导入系统头文件的
#import "Tire.h" 引号表示导入项目本地头文件
三、使用跨文件依赖关系
在一个引用其他类的类中通过替换#import头文件命令改为@class来避免一个类变更后所有引用类均要重新编译的问题
举例代码:一个接口文件代码
#import <Cocoa/Cocoa.h>
@class Tire; 替换了原有代码#import Tire;
@class Engine; @class创建了一个向前引用,他告诉编译器,以后你会知 道这个类是什么,现在你只需要知道这些
@class可以解决#import中多个类互相引用时造成的编译错 误,@class可以解决
@interface Car : NSObject
{
Tire *tires[4];
Engine *engine;
}
-(void) setEngine : (Engine *) newEngine;
-(Engine *) engine;
-(void) setTire : (Tire *)tire
atIndex : (int) index;
-(void) print;
@end//Car
四、导入和继承
当一个类继承自其他类时,该类需要了解其超类中的详细信息,因而无法使用@class命令,只能使用#import命令