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

标签 objective-c enums namespaces visibility typedef

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

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

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

我想确保
只需调用 MONDAY产生编译错误或至少警告,并且访问枚举值的唯一方法是类似 Day.MONDAY 的内容。或 Day::MONDAY[Day MONDAY]或者...

在 Java 中,我要么使用枚举,要么使用接口(interface),但这在 Objective-C 中可行吗?

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

最佳答案

这只是一种变通方法,但您可以创建具有多个类方法的自定义接口(interface)(因此无需创建实例),其中每个方法代表一个常量。

这样常量只能按您的要求访问(即 Day.MONDAY[Day MONDAY] )。

关于objective-c - 如何限制Objective C中枚举值的可见性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7388997/

相关文章:

ios - Xcode 5.1 : Remove x86_64 architecture

objective-c - Cocoa 应用程序模板 - MainMenu.xib - 主窗口

ios - 如何访问目录

ios - Swift 使用函数中指定的守卫和 fatal error

c++ - 如何为全局命名空间中的类提供 swap()?

php - 如何在 php 中访问私有(private)范围的命名空间数组数据?

C++11 内联命名空间与直接在封闭命名空间中嵌入类型

objective-c - 如何使用 cocoa 进度条?

Java 枚举映射?

html - 在 Angular html 模板中访问常量枚举