2.在類的頭文件中盡量少的引入其他頭文件锭环。
??Objective-C一般創(chuàng)建“類”(class)的方式是創(chuàng)建頭文件(.h)和實現(xiàn)文件(.m)
創(chuàng)建好一個類聪全,代碼如下:
//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
以上是基礎(chǔ)的創(chuàng)建簡單類,但很多時候我們使用的類并非這么簡單辅辩,類的當(dāng)中還會使用到其他的類难礼,這個時候我們一般的寫法是這樣的。
//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.若無法使用向前聲明看蚜,比如說要遵循某個協(xié)議。這情況赔桌,盡量吧“該類遵循某協(xié)議”這個聲明移至“class - continuation分類”中供炎。如果還是不行,就把協(xié)議單獨放在一個頭文件疾党,然后將其引入音诫。
本文是來自對《Effective+Objective-C+2.0++編寫高質(zhì)量iOS與OS+X代碼的52個有效方法》學(xué)習(xí)的記錄,大家可自行閱讀原著雪位。