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