iOS #include、#import、@class的區別

在OC中,引用文件可以通過#include、#import、@class三種方式。

一. #include

1. 在C語言中,我們使用#include來引入頭文件。使用#include “xx.h”來引入自定義的頭文件,使用#include來引入庫中的頭文件。

2. #include不是不能防止重復引用頭文件,而是操作起來比較復雜。

3. #include:為了防止重復引用可采用:

#ifndef ?ViewController_h

#define ViewController_h

#endif

二. #import

1. #import是#include的升級版,可以防止重復引入頭文件這種現象的發生。

2. #import在引入頭的時候,就是完全將頭文件拷貝到現在的文件中。所以也有效率上的問題。

3. #import最大的問題在于,需要避免出現頭文件遞歸引入的現象。(如:A引入B,B引入A,那么A、B的頭文件會互相不停的拷貝)

三. @class

1. @class用來告訴編譯器,有這樣一個類,使書寫代碼時,不報錯。 但是@class只是使導入的類名在引用時不受影響,不能創建該類的對象,因為創建對象時也需要訪問其內部方法。

2. 因為#import引入頭文件有效率問題,所以,當還沒有調用類中方法,僅僅是定義類變量的時候,使用@class來提醒編譯器。而在真正需要調用類方法的時候,進行#import。

3. 如果A是B的父類,那么這是在B.h中就必須要使用#import來引入A的頭,因為需要知道A類中有哪些變量和方法,以免B類中重復定義。 ?

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,993評論 19 139
  • #import與#include的區別 #import比起#include的好處就是不會引起交叉編譯 for ex...
    myjourney閱讀 354評論 0 0
  • 1.項目經驗 2.基礎問題 3.指南認識 4.解決思路 ios開發三大塊: 1.Oc基礎 2.CocoaTouch...
    陽光的大男孩兒閱讀 5,042評論 0 13
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,779評論 18 399
  • 這是一個時代與另一個時代的對抗,然而你必須得承認,時代始終是走在前進的路上,那趕不上時代的終歸拋棄,那妄圖用舊日的...
    采臣Allen閱讀 1,912評論 0 0