我有这个代码的pch文件:
#import "ServerModel.h"
enum {
SAVE = 1,
REMOVE = 2,
REMOVE_ALL = 3
};
typedef NSInteger RequestType;
我试图在ServerModel.h中使用RequestType
,但编译器对我的枚举一无所知。我尝试为我的枚举创建头文件,并在pch文件中导入此文件,但没有任何更改。
所以基本问题是:我不能在文件中使用.pch文件中的枚举,这个文件是#import
。
有没有办法解决这个问题? pch文件是把枚举放在那里的好地方吗?
UPD:
我尝试将所有这些枚举放在一个头文件中,并将#import
此文件放在pch文件中的所有#import
的末尾,但它不起作用。
但后来我把
#import "Enums.h" // my file with enums
在pch文件的开头,在所有其他#import
之前,它正在工作。
如果有人在其他#import
之前或之后解释#import
的位置差异,我会很高兴。
UPD2:
我会试着让它更清楚:
我有Enums.h
枚举:
enum {
SAVE = 1,
REMOVE = 2,
REMOVE_ALL = 3
};
typedef NSInteger RequestType;
MyProject-Prefix.pch
:
#import "ServerModel.h"
#import "Enum.h"
和ServerModel.h
包含以下代码:
- (void)unlinkAccountWithRequestType:(RequestType)requestType;
我在这个方法上遇到错误:Expected a type
。我清理了我的项目并得到了同样的错误。
当我像这样切换#import
时:
#import "Enums.h"
#import "ServerModel.h"
一切都很好
答案 0 :(得分:2)
案例1:如果您像这样导入
#import "ServerModel.h"
#import "Enums.h"
然后编译器会在ServerModel.h
遇到Enums.h
语句之前检查#import "ServerModel.h"
文件。在检查ServerModel.h
时,它会找到token
RequestType
并说 WTF是RequestType ?? 并在您的脸上抛出错误。
案例2:如果你写这个
#import "Enums.h"
#import "ServerModel.h"
然后编译器成功编译Enums.h
然后编译ServerModel.h
并再次找到token
RequestType
并说是的我知道这是typedef
{ {1}} NSInteger
中定义的{1}}。最后它快乐地继续前进。