20120810-課堂筆記--源文件的佈局

1.接口和實現的拆分

  • 將所有代碼放入main.m文件中,不適合大型項目。
  • 分析:ObjC中,類的源代碼分爲兩部分;
  • 接口(interface):提供類的描述,包含了使用該類所需的信息;
  • 實現(implementation):告訴編譯器如何讓該類工作,實現了接口中聲明的方法
存放接口代碼的文件:放在頭文件中,頭文件名稱與類名稱相同,用.h 作後綴
  • 類 的@interface指令
  • 公共struct定義
  • enum常量
  • #define 和全局變量的聲明(extern)等
  • 全局變量定義在頭文件中,將引起重定義、link error

存放實現代碼的文件:放在與類同名,是以.m爲後綴的文件中。
  • 所有實現細節如類的@implementation的指令。
  • 全局變量的定義。
  • 私有struct
  • 結構體定義放在@implementation 和@end之外;
  • .m文件不止包含類實現

拆分總結:

main函數、底層類、繼承類、複合類的頭、源文件分類總結

文件類型     說明
類Engine、Tire類 #import<Foundation/Foundation.h>
類Engine、Tire類 #import”自己.h"
繼承類
頭文件
#import“基類.
h”
繼承類
源文件
#import”自己.h"
複合頭文件 #import”組成元素.h"
複合原文件 #import”自己.h"
main.m #import”所有.h”
   

2.跨文件的依賴關係
依賴關係:兩個實體間的一種關係,可存在於兩個類之間,也可以存在於兩個或多個文件之間。

跨文件依賴關係的建立
導入頭文件將在頭文件和進行導入的源文件之間建立了一種很強的依賴關係
如果這個頭文件有任何變化,則所有依賴於它的文件都要重新編譯;

傳遞性

依賴關係可傳遞的,即頭文件也可以互相依賴,因此重新編譯的問題可能變的很嚴重。


@class關鍵字:

告訴編譯器,這是一個類,只需要通過指針來引用它。@class 創建了一個前向引用,告訴編譯器後面會知道這個類是什麼。

提高效率,編譯器不需要處理整個頭文件
如果需要引用某個類中的方法,該指令不能勝任。
複合:
只需要被引用類的指針作爲數據成員;
代碼中只出現對象的指針。
繼承:
需要被引用類的方法以繼承,代碼中出現類。
 

@Class 與 #import  
在繼承的頭文件中,使用#import 導入超類的頭文件
複合的頭文件中,使用@class,不導入基本元素的頭文件,
源文件中,使用#import導入基本元素的頭文件。

原因分析:
編譯器需要知道所有關於超類的信息。才能編譯@interface的內容。





本章總結:
  • 理解ObjC中接口,實現文件功能
  • 掌握ObjC中文件拆分規則
  • 理解跨文件依賴關係
  • 理解關鍵字@class 的使用,複合,繼承。






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