《Effective Objective-C 2.0 編寫高質(zhì)量iOS與OS X的52個有效方法》讀書總結(jié)
第一章 熟悉的Objective-C
第2條:在類的文件中盡量少引入其他頭文件
類(class):
頭文件(head file):后綴.h
實現(xiàn)文件(implementation file):后綴.m
引入頭文件三種方式:
1.#import引入:
一些基本頭文件,如框架類Foundation.h、UIKit.h,由于繼承自框架中的某個類,可能會使用到其基類中的許多內(nèi)容
需要實現(xiàn)屬性、實例變量或者要遵循協(xié)議
2.#include引入
#include 與#import 類似,#import可以自動防止重復(fù)導(dǎo)入,一般情況下使用#import
3.@class關(guān)鍵字引入
只需知道類名而不用知道類中的細節(jié), 即向前聲明(forward declaring),將引用頭文件的時機盡量延后,只在確有需要時才引入。
向前聲明解決了兩個類互相引用的問題。
除非確有必要,否則不要引入頭文件。一般來說,應(yīng)在某個類的頭文件中使用向前聲明來提及別的類,并在實現(xiàn)文件中引入那些類的頭文件。這樣子可以盡量降低類之間的耦合(coupling)。
有時無法使用向前聲明,比如要聲明某個類遵循一項協(xié)議。這種情況下,盡量把 “該類遵循某協(xié)議” 的這樣聲明移至 “class-continuation 分類中” 中。如果不行的話,就把協(xié)議單獨放在一個頭文件,然后將其引入。
“class-continuation 分類”,(class-continuation category)