编写高质量iOS与OS+X代码的52个有效方法(2)

2017-08-31  本文已影响0人  Vesen

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个有效方法》学习的记录,大家可自行阅读原著。

上一篇下一篇

猜你喜欢

热点阅读