#import、#include、@class、#import<>和#import""的區(qū)別

日常

import 是 Objective-C 導入頭文件的關鍵字,完整地包含某個文件的內(nèi)容

1、會自動導入一次,不會重復導入

2、不會引發(fā)交叉編譯; 因為在 Objective-C 中會存在 C/C++ 和 Objective-C 混編的問題,如果用 #include 引入頭文件,會導致交叉編譯。


include C/C++ 導入頭文件的關鍵字,完整地包含某個文件的內(nèi)容.可能出現(xiàn)交叉編譯, OC 里面已經(jīng)沒有這個方式引入頭文件了, 統(tǒng)一使用 #import

@class 僅僅是聲明一個類名,并不會包含類的完整聲明.能解決循環(huán)包含的問題:當兩個類文件有循環(huán)依賴關系 ( A 引用 B , B 引用 A ) 時,需要用 @class


import<> 和 import""

<>: 引用系統(tǒng)文件,它用于對系統(tǒng)自帶的頭文件的引用,編譯器會在系統(tǒng)文件目錄下去查找該文件。

"": 用戶自定義的文件用雙引號引用,編譯器首先會在用戶目錄下查找,然后到安裝目錄中查。


Tip

  • 重復引用:#import 可以使用不會出錯,#include 不可以避免錯誤 #include 會有重復引用的錯誤:A 類導入了 C 類的頭文件,B 類也導入了 C 類的頭文件,D 類又同時導入 A 和 B 類,這就是重復導入 #import則不會有重復引用的問題

  • 交叉引用:#import 和 #include 都不適合用,應該用 @class 的方法。A類導入B類的頭文件,B類導入A類的頭文件的情況

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容