如何限制Objective C中枚举值的可见性?
Posted
技术标签:
【中文标题】如何限制Objective C中枚举值的可见性?【英文标题】:How to limit visibility of enum values in 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.MONDAY
或Day::MONDAY
或[Day MONDAY]
或...
在 Java 中我使用枚举或接口,但这在 Objective-C 中可行吗?
如果不是,那么我必须将所有枚举命名为:DAY_MONDAY, DAY_TUESDAY...
,以便更容易在自动完成弹出窗口中搜索它们。
【问题讨论】:
【参考方案1】:这只是一种解决方法,但是您可以使用许多类方法创建自定义接口(这样就无需创建实例),其中每个方法都代表一个常量。
只有在您要求时才能访问常量(即Day.MONDAY
或[Day MONDAY]
)。
【讨论】:
没有 C++/Java 风格的静态类变量,对吧?这就是为什么类方法..谢谢你的想法,它会起作用,但当然定义所有这些方法会太多打字..以上是关于如何限制Objective C中枚举值的可见性?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Objective-C 中使用 Swift 字符串枚举?