Objective c 我可以在运行时通过字符串名访问ObjC常量吗?

Objective c 我可以在运行时通过字符串名访问ObjC常量吗?,objective-c,runtime,constants,symbolic-references,Objective C,Runtime,Constants,Symbolic References,我知道Objective-C允许我使用@selector(@“name”)按名称引用选择器。如何在运行时按名称访问以下常量?换句话说,我会在某个地方传递@“CONST_KEY”,然后拿回@“KEY” const NSString* CONST_KEY = @"key"; 我想我可以先创建一个键值字典,然后在运行时查询它,但我不确定是否有更好的实现 使用特定用例进行澄清: 我想使用在我的故事板中声明的集合视图单元重用标识符@“CONST_KEY”,并能够使用此标识符在运行时查找CONST_KEY

我知道Objective-C允许我使用
@selector(@“name”)
按名称引用选择器。如何在运行时按名称访问以下常量?换句话说,我会在某个地方传递
@“CONST_KEY”
,然后拿回
@“KEY”

const NSString* CONST_KEY = @"key";
我想我可以先创建一个键值字典,然后在运行时查询它,但我不确定是否有更好的实现

使用特定用例进行澄清:
我想使用在我的故事板中声明的集合视图单元重用标识符
@“CONST_KEY”
,并能够使用此标识符在运行时查找
CONST_KEY
的值


这样,我希望在代码中有一个地方可以修改常量,而不必在多个类中重新赋值。将这两个值链接起来将允许我使用
CONST_键对所有这些单元格执行单个操作,以定义它们将要执行的操作。

您不需要调用选择器来获取常量,只需将其公开给其他类即可。此外,常量应该位于其相关类的内部。我使用的方法如下

在导入语句正下方的头文件中(在@interface之前)声明:

extern NSString *const CONST_KEY;
NSString *const CONST_KEY = @"key";
在同一位置(在@interface和@implementation上方)的实现文件中声明:

extern NSString *const CONST_KEY;
NSString *const CONST_KEY = @"key";
在您这样做之后,在任何导入您声明常量的类的类中,您将能够简单地使用CONST_KEY引用它

例如


etc–使用此约定对于类型安全非常重要。我一直在使用它。

您不需要调用选择器来获取常量,只需将其公开给其他类即可。此外,常量应该位于其相关类的内部。我使用的方法如下

在导入语句正下方的头文件中(在@interface之前)声明:

extern NSString *const CONST_KEY;
NSString *const CONST_KEY = @"key";
在同一位置(在@interface和@implementation上方)的实现文件中声明:

extern NSString *const CONST_KEY;
NSString *const CONST_KEY = @"key";
在您这样做之后,在任何导入您声明常量的类的类中,您将能够简单地使用CONST_KEY引用它

例如


etc–使用此约定对于类型安全非常重要。我一直在使用它。

Objective C只是一个添加了对象功能的C。因此,在编译过程中会丢弃“CONST_KEY”常量名称。因此,您必须创建自己的类或使用NSDictionary来提供“常量名称”->“常量值”功能。

目标C只是一个添加了对象功能的C。因此,在编译过程中会丢弃“CONST_KEY”常量名称。因此,您必须创建自己的类或使用NSDictionary来提供“常量名称”->“常量值”功能。

我真的不明白这个问题-这不只是一个全局变量吗?访问全局变量并返回值?额外的间接层给你带来了什么?如果你需要通过钥匙访问,那么字典似乎是最明显的方式;字典怎么了?你想解决什么问题?我想把全局变量链接到故事板中的一个单元格标识符。我真的不明白这个问题-这不只是一个全局变量吗?访问全局变量并返回值?额外的间接层给你带来了什么?如果你需要通过钥匙访问,那么字典似乎是最明显的方式;字典怎么了?你想解决什么问题?我想在情节提要中将全局变量链接到单元格标识符。这没有抓住问题的关键。OP似乎希望在运行时使用动态引用来访问常量,而不是硬编码引用(如您的答案所示)。这没有抓住问题的关键。OP似乎希望在运行时使用动态引用来访问常量,而不是硬编码引用(如您的答案所示)。