的回答你的問題是,要麼繼續前進,導入typedef的頭文件或使用通用型像NSInteger的,而不是枚舉類型的。
但是,沒有導入頭文件的原因不僅僅是編譯速度。
不導入頭文件還可以減少無意中訪問無關的類。
例如,假設您有一個TrackFileChanges類,用於跟蹤文件系統以更改特定文件,並且您有一個用於存儲文件緩存數據的CachedFile類。後者可能會使用TrackFileChanges *類型的私有ivar,但是對於CachedFile的使用,這只是一個實現細節(理想情況下,ivar會使用新的運行時自動生成私有屬性,但這不可能,重新使用舊的運行時間)。
因此,#import「CachedFile.h」可能不需要或不想訪問TrackFileChanges.h的客戶端。如果他們這樣做,他們應該通過#importing它自己來清楚。通過在CachedFile.h中使用#import「TrackFileChanges.h」的@class TrackFileChanges instea,可以改進封裝。
但所有這一切說,從第二個頭文件導入頭文件沒有錯,如果第二個頭想要公開第一個到所有客戶端。例如,聲明類的頭文件需要直接導入到頭文件的子類中,而聲明協議的頭文件可能會直接導入(儘管您可以使用@protocol ABC來避免這種情況)。
對於近期的答案(SWIFT 3,2017年)看在我的答案。 http://stackoverflow.com/a/42009056/342794 – lal 2017-05-03 19:49:33