@class 與 #import 的區別

#import會將此類的全部文件所有導入,而@class只是告訴編譯器有這麼一個類,引用類名,通常用在.h文件@interface以前;簡而言之,就是當只須要定義此類時,只須要@class類名便可,而須要用到此類的方法或變量時,就須要用#import來包含整個類的文件;.net

若是隻須要@class,而用了#import是不會報錯的,可是會大大影響程序的效率,由於這樣在編譯過程當中必須將import的全部類都編譯一遍,尤爲是引用的類比較多時;好比你在A類中import了B類,而B類中又import了c、d類,那程序在編譯時要將A,B,c,d類所有編譯一遍,而用@class則不會耗費大量時間。get

若是有循環依賴關係,如:A–>B, B–>A這樣的相互依賴關係,若是使用#import來相互包含,那麼就會出現編譯錯誤,若是使用@class在兩個類的頭文件中相互聲明,則不會有編譯錯誤出現編譯器

相關文章
相關標籤/搜索