2010-05-17 54 views
2

我目前使用MyApp_Prefix.pch前綴頭文件將我的所有類別頭文件包括到我的每個源文件中,而不是手動將它們僅嵌入到其中的位置他們被使用。我的應用程序委託中的編譯器#define的類別方法和大量代碼在我的代碼中的很多地方使用。在每個源文件中包含頭文件(Objective-C)

有沒有這方面的缺點?這只是編譯將花費更長的時間?

回答

1

源級別依賴關係。 通過有效地將標題導入到每個源文件中,這意味着每個源文件都可能依賴於它,但依賴項不可見。 源代碼級依賴性是陰險的。當你不看時,他們會爬起來,然後很難分開他們。 他們可以引入其他nasties,如包含文件排序問題。

OTOH對於小型項目來說這可能不是一個很大的問題。

儘管如此,對我個人而言,我的習慣是永遠不會依賴於另一個源文件 - 這意味着我的頭文件很少#import其他(非框架)頭文件。在Objective-C中,通常可以比C++更乾淨地執行此操作,因爲您始終通過指針保存Objective-C對象,所以它們只需要在頭文件中提供前向聲明。

1

有沒有這方面的缺點?這只是編譯將花費更長的時間?

不,不是真的。這意味着每次你改變任何頭部時,整個項目都會被重新編譯。但另一方面,由於它是預編譯的,因此在需要重新編譯但不更改標題的情況下可能會節省一些時間。

在pch文件中填充所有標頭是有好處的,因爲這意味着您不太可能偶然忽略標頭。有時候,如果Objective-C沒有頭文件,例如錯誤的編譯,如果你有兩個班,聲明如方法:

-(void) doSomethingWith: (float) aNumber; 

-(void) doSomethingWith: (double) aNumber; 

不正確的頭,Objective-C的可能已經猜到了錯誤doSomethingWith:並通過雙,其中一個浮子預期或反之亦然。

說了這麼多之後,我從來不打擾pch。我傾向於只在可能的情況下在.m文件中導入標題,並在頭文件中轉發聲明類。