本帖最后由 HiGodl 于 2015-9-24 17:02 编辑
在我们刚刚开始学习OC时,我们基本上就是把源代码全都放在main.m文件中了,然而这样做是不合理的,对于小程序来说还可以,但是项目太大的话这样做明显维护起来会很麻烦,所以我们就需要把源代码做一个拆分,为每一个类去创建一个.m文件以及.h文件,.h存放类的@interface部分,.m存放类的@implementation部分,然后在.m文件中引入类的头文件.h,下面我们来看一个例子:
Car类
Car.h
- @interface Car : NSObject{
- }
- -(void) print;
- @end
复制代码 Car.m
main.m
- #import <Foundation/Foundation.h>
- @Car
- int main(int argc, const char * argv[]) {
- Car *c = [[Car alloc] init];
- [c print];
- return 0;
- }
复制代码 其中main.m文件中引入类有两种方式,一种是使用@class,一种是class.h,但是由于使用类名.h的话每次编译都会把所有相关的类都重新编译一遍,这样在编译时会花费很长时,由于依赖关系是传递的,头文件之间也可以互相依赖,所以重新编译问题会更严重。
然而使用@class 的方式就会避免这种问题出现,@class会告诉编译器,这个引入的是一个类,我会通过指针来引用该类
但是在继承中引用父类就不能用@class这种方式了,因为子类在编译时需要得到父类的的信息才能成功的编译@interface部分
|
|