首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将选择器作为值存储在NSDictionary中

将选择器作为值存储在NSDictionary中
EN

Stack Overflow用户
提问于 2010-05-13 04:41:27
回答 4查看 11K关注 0票数 54

有没有一种方法可以在不将选择器存储为NSString的情况下将其存储在NSDictionary

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-05-13 04:45:23

SEL只是一个指针,您可以将其存储在NSValue

代码语言:javascript
复制
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys: 
                       [NSValue valueWithPointer:@selector(foo)], @"foo",
                       nil];

要取回选择器,您可以使用:

代码语言:javascript
复制
SEL aSel = [[dict objectForKey:@"foo"] pointerValue];
票数 107
EN

Stack Overflow用户

发布于 2012-02-13 18:34:15

格奥尔格的解决方案的另一种选择是在将选择器存储到NSDictionary之前将其转换为NSString:

代码语言:javascript
复制
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys: 
                      NSStringFromSelector(@selector(foo)), @"foo",
                      nil];

SEL selector = NSSelectorFromString([dict objectForKey:@"foo"]);

尽管这种技术使用了更多的内存,但它使您能够通过像JSONKit这样的库将整个NSDictionary序列化为字符串。

票数 10
EN

Stack Overflow用户

发布于 2010-05-13 04:49:53

NSDictionary实际上只是一个保留和释放所有键和值的CFDictionary。如果直接创建CFDictionary,则可以将其设置为不保留和释放值。您可以将CFDictionaryRef类型转换为NSDictionary *,反之亦然。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2822602

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档