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



我知道Objective-C允许我使用@selector(@"name")按名称引用选择器。如何在运行时按名称访问以下常量?换言之,我会在某个地方通过@"CONST_KEY",然后取回@"key"

const NSString* CONST_KEY = @"key";

我想我可以先创建一个键值字典,然后在运行时查询它,但我不确定是否有更好的实现。

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

通过这种方式,我希望在代码中有一个单独的位置来修改常量,而不必在多个类中重新赋值。通过链接这两个值,我可以使用CONST_KEY为所有这些单元格定义一个操作。

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

您不需要调用选择器来获取常量,只需要将其公开给其他类即可。常量也应该存在于它的相关类中。我使用的方法如下。

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

extern NSString *const CONST_KEY;

在同一位置的实现文件中(在@interface和@implementation之上)声明:

NSString *const CONST_KEY = @"key";

在您这样做之后,在任何导入您声明常量的类的类中,您将能够简单地使用CONST_KEY 引用它

例如

[someDictionary objectForKey: CONST_KEY];

NSLog(@"%@", CONST_KEY); 

等等–使用此约定对类型安全非常有利。我一直在用它。

相关内容

  • 没有找到相关文章

最新更新