使用在Objective C中的另一个类中声明的enum数据类型

时间:2012-04-06 07:14:05

标签: objective-c enums

我有一个DataClass.h

@interface DataClass : NSObject
{
}

enum knownTypes
{
    type1 = 0,
    type2,
    type3,
    UnknownType = -1
};

有没有办法可以在.m文件中指定knownTypes并从其他类访问。​​

这是我正在创建的Util类,因此不想创建一个对象来访问此类中的值。

对于ex:在TestClass.m中,通过导入DataClass.h,现在我可以将枚举值用作type1,type2 ..但是如果我在DataClass.m中声明枚举数据,我就无法使用这些枚举值。

2 个答案:

答案 0 :(得分:15)

这与课程无关。这是C的一个特色。

如果您在.h文件中定义类型或枚举,则可以在需要的地方导入它(#import)来使用它。

如果您在.c.m文件中定义枚举,则只有文件中该定义之后的元素才能使用它。

在您的情况下,您似乎需要在两个不同的文件中使用相同的枚举。用法是在单独的文件中定义枚举,例如knownTypes.h,然后使用它在{2}和DataClass.m中导入该文件:

如果TestClass.m用于测试目的,那么您当前的组织就可以了:枚举在TestClass中声明,DataClass.hDataClass.m导入TestClass.m

答案 1 :(得分:1)

不,如果您在源文件中定义enum而不是标头,那么只有该源文件才能使用enum中使用的标识符。如果您希望将其保持为“私有”但可由多个源文件使用,请将其放在单独的标头中,并在两个源文件中包含此单独的标头。