【问题标题】:How to limit visibility of enum values in Objective C?如何限制Objective C中枚举值的可见性?
【发布时间】:2011-11-15 09:11:33
【问题描述】:

在 Objective C 中,当你定义一个枚举时,所有的枚举值在任何地方都是可见的,并且会阻塞全局命名空间。

我想让它成为 Java 风格并强制枚举只能通过枚举类型名称访问,例如与

typedef enum
{
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY, NUM_OF
} Day;

我想确保 简单地调用MONDAY 会产生编译错误或至少是警告,访问枚举值的唯一方法是Day.MONDAYDay::MONDAY[Day MONDAY] 或...

在 Java 中我使用枚举或接口,但这在 Objective-C 中可行吗?

如果不是,那么我必须将所有枚举命名为:DAY_MONDAY, DAY_TUESDAY...,以便更容易在自动完成弹出窗口中搜索它们。

【问题讨论】:

    标签: objective-c enums namespaces visibility typedef


    【解决方案1】:

    这只是一种解决方法,但是您可以使用许多类方法创建自定义接口(这样就无需创建实例),其中每个方法都代表一个常量。

    只有在您要求时才能访问常量(即Day.MONDAY[Day MONDAY])。

    【讨论】:

    • 没有 C++/Java 风格的静态类变量,对吧?这就是为什么类方法..谢谢你的想法,它会起作用,但当然定义所有这些方法会太多打字..
    猜你喜欢
    • 2011-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-22
    • 1970-01-01
    • 2011-06-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多