如何限制Objective C中枚举值的可见性?

时间:2011-09-12 13:52:29

标签: objective-c enums namespaces visibility typedef

在Objective C中,当您定义枚举时,所有枚举值都可以在任何地方看到并阻塞全局命名空间。

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

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

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

在Java中我使用Enums或Interfaces,但这在Objective-C中是否可行?

如果没有,那么我必须命名所有这样的枚举:DAY_MONDAY, DAY_TUESDAY...,以便在自动完成弹出窗口中更容易找到它们。

1 个答案:

答案 0 :(得分:1)

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

这样,常数只能在你问的时候访问(即Day.MONDAY[Day MONDAY])。