總結:#import和#include區別 #import和@class的區別 #import和#import""的區別

#import和#include的區別
(1)使用場合不同
  #import是導入Objective-C頭文件的關鍵詞,#include是導入C/C++頭文件的關鍵詞
(2)重複引用

  使用#include需要處理重複引用,#import能防止同一個文件被多次包含,則不需要處理重複引用


#import和@class的區別:

(1)包不包含
      #import會包含這個類的所有信息(包括實體變量和方法),而@class只是告訴編譯器,其後面聲明的名稱是類的名稱,至於這些類是如何定義的,你現在不需要關心
(2)用與不用
   在頭文件中,一般只需要知道被引用的類的名稱就可以了,不需要關心類內部細節,所有用@class
   在實現文件中,會用到被引用類的內部的實體變量和方法,所以用#import來包含被引用類的頭文件

(3)編譯效率
    假如你有100個頭文件都#import了同一個頭文件A,或者這些文件存在依賴關係:A–>B, B–>C, C–>D...。當頭文件A發生改變的時候,後面所有引用它的類都需要重新編譯,這是非常耗性能的。而用@class則不會。
(4)是否會產生循環依賴

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

      所以,一般來說,@class是放在interface中的,只是爲了在interface中聲明這個類。如果在@implementation中需要引用這個類的實體變量或者方法之類的,還是需要import在@class中聲明的類進來.

#import<>和#import的區別

這兩者區別很簡單,#import用來包含系統自帶的文件,#import""用來包含自定義的文件


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章