Objective-C向前引用

在聲明某個實例變量或屬性的類型時,編譯器需要知道那種類型。視圖控制器的頭文件已經導入常見的IOS頭文件中,因此可以訪問到所有這類型的定義。
要實現新類的聲明,有兩種方法。第一種方法是導入這個新類的頭文件。要構建Car類的屬性,需要使用#import”Car.h”語句
另一種方法是針對Car這個類,使用@class Car聲明“向前引用”;告訴編譯器Car是合法的類,並且在某處定義。通常,在.h文件中使用@class,在.m文件中使用#import。
使用向前引用有三個原因。第一個是加速代碼的構建。在目前已經做完的小項目中,根本不存在這個問題,但是在有着樹狀子類的更大項目中,Xcode需要處理頭文件每個導入的文件。可能的是,每個頭文件中,存在許多需要被處理的導入類,即使只有一個或兩個實現文件才使用到這個類。
第二點是,也是不太普遍的一點,在於避免循環引用。在一個發生在當兩個類最後引用彼此的實例變量時。也就是說,類A需要包含類B的一個屬性,類B有類A的一個屬性。通常,問題不會這麼明顯,屬性是在其他類的子類中進行聲明。
最後一個原因在於避免複雜,處於重用性考慮。
最有效的策略是在.h文件中使用@class,在.m文件中使用#import

資料來源於《ios開發完全上手》

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