2014-03-07 45 views
1

因此,我正在使用最新的Xcode中引入的新的@import模塊語法 - 我仍然想知道最佳放置位置。之前,我會將庫導入和非常重要的類別放入.pch文件中,但現在不再需要(至少不適用於本機框架)。我的第一個想法是創建一個modules.h文件,並在那裏進行所有的輸入,然後將modules.h文件包含在AppDelegate中 - 但這看起來不正確。另外,首先導入你需要它也沒有意義,因爲你可能會在不同的地方使用它。什麼是放置模塊@imports的好地方?

這實際上是一個關於「最佳實踐」的問題,這當然是有點主觀的。但我認爲這會影響到很多人和整個項目結構。所以請分享你的解決方案。

+3

只要導入你曾經使用它的地方。那有什麼問題? – DrummerB

+0

請在評論前告知自己關於@import的事宜。 – jimpic

回答

2

這聽起來像你沒有這樣做的最好的方式之前,一般來說,你希望在任何時候只有少量符號可用。出於幾個不同的原因: 使用具有相同名稱但具有不同值或符號類型的符號出錯的可能性較小,並且出於編譯器必須少量導入每個編譯單元的原因。

我不是@import如何改變預處理和編譯的編譯器語義的專家,但我懷疑你應該仍然基本上導入的東西儘可能接近他們將盡可能使用的地步。

我通常不會將任何類的頭文件導入到另一個類的.h文件中。 在一個.h我會轉發申報與@class SomeCLass任何類,只包括足夠的頭來滿足我用作ivar /屬性的c/C++類型。這是唯一的例外,如果我需要包含一個超類的頭或另一個協議的.h。

的其餘部分包括進入.M

我喜歡讓我PCH相當簡樸,但如果你有一些實用工具類或一種廣泛使用的圖書館,你可以包括東西在那裏,我傾向於不是......但在較小的項目中,您可能不會遇到問題......您將遇到帶有數百個源文件的項目索引問題,特別是如果您有一些Objective-C++單元時。這將最終損害代碼完成和實時語法檢查。

+0

對不起,我的意思只是作爲一個評論,但我有點沉重打擊。 –

+1

+1我只會在幾乎所有源文件中使用的前綴頭文件中導入東西。這就是UIKit在iOS應用程序項目中默認導入的原因。我自己添加了伐木工人日誌庫,就是這樣。 – DrummerB

+0

謝謝我已經這樣做了,只有在真正需要的時候才使用.pch。但是這並不能回答@import的最佳做法,因爲它與#import完全不同#import – jimpic