【问题标题】:Using enum datatype declared in another class in Objective C使用在Objective C的另一个类中声明的枚举数据类型
【发布时间】:2023-03-16 11:57:01
【问题描述】:

我有一个 DataClass.h

@interface DataClass : NSObject
{
}

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

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

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

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

【问题讨论】:

  • 为什么要把 UnknownType 放在底部?

标签: objective-c enums


【解决方案1】:

这与类无关。这是 C 的一个特性。

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

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

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

如果TestClass 用于测试目的,那么您当前的组织是可以的:枚举在DataClass.h 中声明并且DataClass.mTestClass.m 都导入DataClass.h

【讨论】:

    【解决方案2】:

    不,如果您在源文件而不是标题中定义enum,那么只有该源文件才能使用enum 中使用的标识符。如果你想让它保持“私有”但可供多个源文件使用,请将它放在一个单独的头文件中,并将这个单独的头文件包含在两个源文件中。

    【讨论】:

    • 这就是我要做的,这里的数据类是那个单独的头文件
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-31
    • 1970-01-01
    • 2020-07-19
    • 1970-01-01
    • 2022-01-23
    • 1970-01-01
    相关资源
    最近更新 更多