在Objective-C中類想使用另一個類的東西,需要導入另一個類的頭文件
導入方式:
import 建議Objective-C類
include 建議C++或C
import和include在功能上基本一樣,唯一的區(qū)別是使用import導入的類只會走一次頭文件,將頭文件里的變量方法等包含進來,而include不會去判斷,重復走,包含,導致報重定義錯誤,引起交叉編譯。
不過使用import有兩個問題
1,循環(huán)依賴
2,編譯效率
1,如:A–>B, B–>A這樣的相互依賴關系,如果使用#import來相互包含,那么就會出現編譯錯誤
2,如果你有100個頭文件都#import了同一個頭文件,或者這些文件是依次引用的,如A–>B, B–>C, C–>D這樣的引用關系。當最開始的那個頭文件有變化的話,后面所有引用它的類都需要重新編譯,如果你的類有很多的話,這將耗費大量的時間
這時,可以使用@class,它可以解決這個問題
@class只是告訴編譯器,其后面聲明的名稱是類的名稱,我們可以實現類里使用#import,避免上面兩個問題
1,因此沒有必須使用的理由,別在頭文件里使用#import,可以在頭文件使用@class聲明,在實現文件里使用#import。這樣可以降低類之間的耦合.
2,有時無法使用@class聲明,比如要聲明某個類遵循一項協議。這時,盡量把“該類遵循某協議”的這條聲明移至“class-continuation分類”中。如果還不行的話,就把協議單獨放在一個頭文件中,然后將其引入。