編寫高質量iOS與OS+X代碼的52個有效方法(2)

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個有效方法》學習的記錄,大家可自行閱讀原著。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容