枚举可以在与在Objective-C中使用它的类头相同的文件中定义吗?

Sen*_*ful 4 enums objective-c header-files

如果不是,它需要被包含在一个单独的文件(如MyEnums.h),我需要在每次.M或.h文件中要参考的类型或值的一个时间#IMPORT MyEnums.h?


这是MyClass.h的示例代码:

#import <Foundation/Foundation.h>

// #1 placeholder

@interface MyClass : NSObject {
}

// #2 placeholder

- (void)sampleMethod:(MyEnum)useOfEnum;

// #3 placeholder

@end
Run Code Online (Sandbox Code Playgroud)

这是我想要定义的枚举:

typedef enum MyEnum {
    Value1,
    Value2
}
Run Code Online (Sandbox Code Playgroud)

如果我尝试将我的枚举定义放在#1中,我会收到错误:在'interface'之前没有指定类型或存储类.

如果我尝试将我的枚举定义放在#2中,我会收到错误:期望的标识符或'('在'结尾'之前.

如果我尝试将我的枚举定义放在#3中,我会在'MyEnum'之前得到错误:expect')'.哪个抱怨参数"useOfEnum",因为它的类型尚未定义.


那可以这样做吗?或者,最好的方法是什么,并限制#imports所需的数量?

e.J*_*mes 5

它应该在#1位置工作,但我认为你需要这样写:

typedef enum {
    Value1,
    Value2
} MyEnum;
Run Code Online (Sandbox Code Playgroud)

要正常工作.

更新:我已经证实了这一点(至少在Xcode 3.2中).上面显示的语法编译没有错误.