#include C/C++中導入頭文件的預編譯指令
1. #include"A.h" ?在用戶自己的目錄下尋找文件
2. #include<B.h> ?在系統(tǒng)目錄下尋找文件
#include會包含這個類的全部內(nèi)容, 使用時要避免遞歸包含,例如:A.h包含B.h, 那么B.h就不能包含A.h, 否則編譯會報錯; 還需要注意重復包含的問題, 例如:A.h已包含B.h, 那么在C.h中就不要再同時包含A.h和B.h, 雖然是允許的,但會降低編譯效率, OC的#import解決了重復包含的問題(這也是兩者的區(qū)別);
#import OC中導入頭文件的預編譯指令
1. #import"A.h" ?在用戶自己的目錄下尋找文件
2. #import<B.h>??在系統(tǒng)目錄下尋找文件
#import 同樣會包含這個類的全部內(nèi)容, 不會有重復包含的問題, 但同樣會有遞歸包含(交叉導入)的問題, 即兩者產(chǎn)生循環(huán)依賴關(guān)系, 例如: A.h->B.h, B.h->A.h, 這時就形成了交叉導入的問題; @class 的出現(xiàn)就能很好的解決這個問題;
@class OC中聲明類名
@class 告訴編譯器, 緊跟我之后的是一個存在的類, 你不要警告,不要報錯, 至于這個類是干什么的我隨后再告訴你; 所以, @class 并不能包含類中的信息, 只是類的一個代言人, 要想使用類的屬性, 成員方法, 實體變量等, 還要在.m 中#import這個類
綜上, @class不會包含類中內(nèi)容, 所以@class的編譯效率也要高于#import, 但同時也不可知類的信息, 要想使用類的屬性, 成員方法, 實體變量等, 還要在.m 中#import這個類, 所以在實際開發(fā)中, 我們能夠使用.h中 @class 類, .m中 #import 類 的方法就不要在.h 中 #import 類, 這樣既可避免了交叉導入, 又提高了編譯效率