Objective-C 類頭文件盡量少引入其他頭文件--Effective筆記

在Objective-C中類想使用另一個類的東西,需要導入另一個類的頭文件

導入方式:

import 建議Objective-C類

include 建議C++或C

import和include在功能上基本一樣,唯一的區(qū)別是使用import導入的類只會走一次頭文件,將頭文件里的變量方法等包含進來,而include不會去判斷,重復走,包含,導致報重定義錯誤,引起交叉編譯。

不過使用import有兩個問題
1,循環(huán)依賴
2,編譯效率

1,如:A–>B, B–>A這樣的相互依賴關系,如果使用#import來相互包含,那么就會出現編譯錯誤
2,如果你有100個頭文件都#import了同一個頭文件,或者這些文件是依次引用的,如A–>B, B–>C, C–>D這樣的引用關系。當最開始的那個頭文件有變化的話,后面所有引用它的類都需要重新編譯,如果你的類有很多的話,這將耗費大量的時間

這時,可以使用@class,它可以解決這個問題
@class只是告訴編譯器,其后面聲明的名稱是類的名稱,我們可以實現類里使用#import,避免上面兩個問題

1,因此沒有必須使用的理由,別在頭文件里使用#import,可以在頭文件使用@class聲明,在實現文件里使用#import。這樣可以降低類之間的耦合.
2,有時無法使用@class聲明,比如要聲明某個類遵循一項協議。這時,盡量把“該類遵循某協議”的這條聲明移至“class-continuation分類”中。如果還不行的話,就把協議單獨放在一個頭文件中,然后將其引入。

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

相關閱讀更多精彩內容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現,斷路器,智...
    卡卡羅2017閱讀 136,569評論 19 139
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,728評論 18 399
  • 1.項目經驗 2.基礎問題 3.指南認識 4.解決思路 ios開發(fā)三大塊: 1.Oc基礎 2.CocoaTouch...
    扶光啟玄閱讀 5,205評論 0 13
  • 首先OC引入頭文件的關鍵字 #import 和 C/C++的#include有一點不一樣就是,同一個頭文件或者.m...
    自在的仙人閱讀 342評論 0 0
  • 文/荷露 有人說你太矮, 有人說你太窮, 只有我覺得那些也是完美。
    荷露尖尖角閱讀 370評論 0 0

友情鏈接更多精彩內容