我有一个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中声明枚举数据,我就无法使用这些枚举值。
答案 0 :(得分:15)
这与课程无关。这是C的一个特色。
如果您在.h
文件中定义类型或枚举,则可以在需要的地方导入它(#import
)来使用它。
如果您在.c
或.m
文件中定义枚举,则只有文件中该定义之后的元素才能使用它。
在您的情况下,您似乎需要在两个不同的文件中使用相同的枚举。用法是在单独的文件中定义枚举,例如knownTypes.h
,然后使用它在{2}和DataClass.m
中导入该文件:
如果TestClass.m
用于测试目的,那么您当前的组织就可以了:枚举在TestClass
中声明,DataClass.h
和DataClass.m
导入TestClass.m
。
答案 1 :(得分:1)
不,如果您在源文件中定义enum
而不是标头,那么只有该源文件才能使用enum
中使用的标识符。如果您希望将其保持为“私有”但可由多个源文件使用,请将其放在单独的标头中,并在两个源文件中包含此单独的标头。