1.引用乙個類的兩種辦法
@class:
如果你只是定義成員變數、屬性
#import:
如果是繼承某個類
2.兩種方法的區別
#import方式會包含被引用類的所有資訊,包括被引用類的變數和方法;
#import//#import "book.h"類似
@inte***ce book : nsobject
@end
@inte***ce student : nsobject
@property book*book;
@end
@
class方式只是告訴編譯器在a.h檔案中,b
*b只是類的宣告,具體這個類有什麼資訊,這裡不需要知道。等實現檔案中真正需要的時候,才會真正檢視b類中的資訊。
3.正確使用方法
student.h
檔案:
//import是為了知道foundation框架有什麼成員,和方法,避免重複定義等。
#import//宣告的時候告訴是個類
@class book;
@inte***ce student : nsobject
@property book*book;
@end
student.m檔案:
//使用的時候,在告訴有什麼成員和方法
#import "book.h"
@implement student
@end
4.@class方式
使用@class方式
由於只需要知道被引用類(b類)的名稱就可以了
,而在實現類由於要用到被引用類中的實體變數和方法,所以在.m檔案中需要使用#import來包含引用類的標頭檔案。
如果又上百個頭檔案都#import同乙個檔案
,或者這些檔案依次被#import,那麼
一旦最開始得標頭檔案改動,後面引用到這個檔案的所有類都需要重新編譯一遍
,這樣的效率也可想而知的,而相對來講,使用@class方式就不會出現這種問題。
當出現迴圈依賴干係的時候
,#import會報錯。
a.h檔案
#import "b.h"
@inte***ce a : nsobject
@end
b.h檔案
#import"a.h"
@inte***ce b : nsobject
@end
OC學習那些事 class關鍵字
1.引用乙個類的兩種辦法 class 如果你只是定義成員變數 屬性 import 如果是繼承某個類 2.兩種方法的區別 import方式會包含被引用類的所有資訊,包括被引用類的變數和方法 import import book.h 類似 inte ce book nsobject end inte c...
20150624 OC之 class關鍵字
class關鍵字的使用及與 import的區別 classa.h ios150624 objectivec class關鍵字 created by pengjunlong on 15 6 24.import import classb.h 會有迴圈鏈的存在,導致編譯無法展開,classa與class...
C 中struct關鍵字和class關鍵字的區別
剛開始接觸 c 看到 中有struct關鍵字,還以為是用了結構體,結果後來發現 struct 和 class 一樣都用於類的定義,於是把兩者的差別記錄於此。一句話總結 兩者均可用於定義類,唯一的區別是兩者定義的類的預設訪問許可權有差別。其實比兩者差別更重要的是,我很好奇為什麼 c 中會存在兩個用於定...