Ruby 符号的 Objective-C 等价物

Posted

技术标签:

【中文标题】Ruby 符号的 Objective-C 等价物【英文标题】:Objective-C Equivalent of Ruby Symbols 【发布时间】:2012-04-02 17:19:20 【问题描述】:

在 Ruby 中,我们有符号可用于哈希键。我正在尝试将 Ruby 库移植到 Objective-C,并且该库中有一个使用符号作为键的哈希。 Objective-C 是否有类似的解决方案?还是我应该使用NSStrings?

【问题讨论】:

Objective-C 是 C 的超集,因此您可以使用 #define 常量来实现类似的结果。 在所有符号上调用一个 to_s,并且您可以将字符串用作您的键(符号是可变字符串) 我说的是 Objective-C 中的符号,而不是 Ruby。 【参考方案1】:

我见过这样的声明

extern NSString *const NSKeyValueChangeNewKey = @"NSKeyValueChangeNewKey";

这样你就可以把它当作钥匙使用:

[dict objectForKey:NSKeyValueChangeNewKey];

有关更详细的解释,请参阅Constants in Objective-C。

【讨论】:

搜索NSKeyValueChangeNewKey 谢谢,刚刚找到一个很好的答案来解释它。 郑重声明:请不要在常量前面加上“NS”——这是苹果的前缀。 @Chuck:对不起,我试图从 Apple 源代码中进行伪引用。我将更改为 hmt 的示例以更清楚一点。【参考方案2】:

Objective-C 中的NSDictionary 键通常是NSStrings。大概就是这样。

您不必担心 Ruby 字符串文字与符号的对比;只需使用键的字符串值创建一个 NSString 或根据需要使用文字 @"my key name" 字符串。

【讨论】:

@benalpert 的答案是更好的答案。符号的使用在 Ruby 中是惯用的,因为它们是不可变的并且只被创建一次。在 Objective-C 中,指向字符串的 const 指针是您想要使用的等价物。

以上是关于Ruby 符号的 Objective-C 等价物的主要内容,如果未能解决你的问题,请参考以下文章

PHP 等价于 Ruby 符号

是否有与 Ruby 符号等效的 Python?

Objective-C 的 NSDictionary 的 Java 等价物是啥?

Objective-C/Cocoa 中 Java 的 Thread.sleep() 等价物是啥?

什么是Objective-C中Android的“Spannable”等价物

什么是objective-c中的php array()等价物