您问题的答案是继续导入typedef头文件,或者使用NSInteger之类的通用类型而不是枚举类型。
但是,除了编译速度之外,还有更多的原因不导入头文件。
不导入头文件还可以减少对无关类的无意访问。
例如,假设您有一个TrackFileChanges类,该类跟踪文件系统对特定文件的更改,而您有一个CachedFile类,用于存储文件中的缓存数据。后者可能使用TrackFileChanges *类型的私有ivar,但是对于CachedFile的使用,这只是一个实现细节(理想情况下,将使用新的运行时使用私有属性自动生成ivar,但是如果您这样做,重新使用旧的运行时间)。
因此,#import“ CachedFile.h”的客户端可能不需要或不想访问TrackFileChanges.h。如果这样做的话,他们应该自己#import使其清楚。通过在CachedFile.h中使用#import“ TrackFileChanges.h”的@class TrackFileChanges插件,可以改善封装效果。
但是,所有这些都说明,如果第二个头文件希望将第一个头文件公开给所有客户端,则从第二个头文件导入头文件没有错。例如,声明类的头文件需要直接导入子类化的头文件中,而声明协议的头文件则很可能直接导入(尽管您可以使用@protocol ABC;避免这种情况)。
typedef int EnumName
怎么样?