您的位置:首页 > 其它

iPhone How-to:如何在NSDictionary中存放Selector

2011-04-13 19:05 246 查看
在iPhone中,Selector类型的定义是:

typedef struct objc_selector *SEL;

可见它本质上是一种指针。而NSDictionary存储的对象应该源自NSObject的对象。直接将SEL类型的值存放到NSDictionary中显然不大可能。在这种情况下,通常有两种做法:一是存放字符串,然后通过NSSelectorFromString从字符串得到SEL。第二种做法就是需要对SEL进行“打包”后存放到NSDictionary,获取时就进行相应的“解包”操作就可以了。本文关注第二种实现,其中存放和获取的代码分别如下:

// 存放Selector

SEL inSelector = @selector(sayHello:);

NSValue *selectorAsValue = [NSValue valueWithBytes:&inSelector objCType:@encode(SEL)];

id dict = [NSMutableDictionary dictionaryWithCapacity:3];

[dict setObject:selectorAsValue forKey:@"action"];

// 获取Selector

SEL outSelector;

[(NSValue *)[dict objectForKey:@"action"] getValue:&outSelector];

[self performSelector:outSelector withObject:@"…"];
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息