的回答你的问题是,要么继续前进,导入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