【掌握】@class基本概念
【掌握】@class其它應用場景
【掌握】@class和#import
【必知】@calss的使用易錯注意事項
【必知】@class的使用總結
作用
可以簡單地引用一個類
簡單使用
@class dog;
僅僅是告訴編譯器:dog是一個類;并不會包含dog這個類的所有内容
具體使用
在.h檔案中使用@class引用一個類
在.m檔案中使用#import包含這個類的.h檔案
對于循環依賴關系來說,比方a類引用b類,同時b類也引用a類
這種嵌套包含的代碼編譯會報錯
當使用@class在兩個類互相聲明,就不會出現編譯報錯
作用上的差別
#import會包含引用類的所有資訊(内容),包括引用類的變量和方法
@class僅僅是告訴編譯器有這麼一個類, 具體這個類裡有什麼資訊, 完全不知
效率上的差別
如果有上百個頭檔案都#import了同一個檔案,或者這些檔案依次被#import,那麼一旦最開始的頭檔案稍有改動,後面引用到這個檔案的所有類都需要重新編譯一遍 , 編譯效率非常低
相對來講,使用@class方式就不會出現這種問題了
總結
使用import效率低下的緣故:
@class的使用提高編譯效率的緣故:
如果兩個類互相拷貝,如果在兩個類的.h檔案中使用import互相調用,就會出現死循環。是以解決方案也是在兩個.h檔案中用@class; ,然後在.m檔案中import導入需要的類。這樣能很好的避免死循環的編譯。
<1>在h頭檔案中使用@class之後,然後在m實作檔案中使用@import注意導入的順序,一般所在實作檔案的對應的頭檔案是放在最下面的。
<2>子類不能在h檔案中通過@class導入所繼承的父類。
如果h頭檔案沒有涉及@class所告訴編譯器的類的屬性和方法,就可以使用@class,然後在對應的m實作檔案#import需要用到的類。