2.在类的头文件中尽量少的引入其他头文件。
Objective-C一般创建“类”(class)的方式是创建头文件(.h)和实现文件(.m)
创建好一个类,代码如下:
//EOCPerson.h
#import
@interface EOCPerson : NSObject
@property (nonatomic,copy) NSString *fristName;//!< fristname
@property (nonatomic,copy) NSString *lastName;//!< lastname
//EOCPerson.m
#import "EOCPerson.h"
@implementation EOCPerson
@end
以上是基础的创建简单类,但很多时候我们使用的类并非这么简单,类的当中还会使用到其他的类,这个时候我们一般的写法是这样的。
//EOCPerson.h
#import
#import "EOCEmptyer.h"
@interface EOCPerson : NSObject
@property (nonatomic,copy) NSString *fristName; //!< fristname
@property (nonatomic,copy) NSString *lastName; //!< lastname
@property (nonatomic,strong) EOCEmptyer *emptyer; //!< emptyer
@end
这种写法有一个问题,就是在编译的时候会先加载 EOCEmptyer.h 文件,其实我们只需要知道有个类名叫 EOCEmptyer。
这时就可以用看起来比较高大上的方法“向前声明”
@class EOCEmptyer;
#import
//#import "EOCEmptyer.h"
@class EOCEmptyer;
@interface EOCPerson : NSObject
@property (nonatomic,copy) NSString *fristName; //!< fristname
@property (nonatomic,copy) NSString *lastName; //!< lastname
@property (nonatomic,strong) EOCEmptyer *emptyer; //!< emptyer
@end
这时//EOCPerson.m 需要改成这样
//EOCPerson.m
#import "EOCPerson.h"
#import "EOCEmptyer.h"
@implementation EOCPerson
@end
这样将头文件的时机引入延后,在需要的时候才引入,可以减少编译时间。
要点
1.除非有必要,否则不要引入头文件。用向前声明来提取类,并在.m中引入头文件。这样可以尽量降低类之间的耦合。
2.若无法使用向前声明,比如说要遵循某个协议。这情况,尽量吧“该类遵循某协议”这个声明移至“class - continuation分类”中。如果还是不行,就把协议单独放在一个头文件,然后将其引入。
本文是来自对《Effective+Objective-C+2.0++编写高质量iOS与OS+X代码的52个有效方法》学习的记录,大家可自行阅读原著。