pch文件中的枚举?

时间:2013-01-18 17:14:04

标签: ios objective-c

我有这个代码的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"

一切都很好

1 个答案:

答案 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}}。最后它快乐地继续前进。