美文网首页
怎么在NSDIctionary中存放@selector

怎么在NSDIctionary中存放@selector

作者: 慧惠 | 来源:发表于2015-12-09 18:05 被阅读211次

1、怎么在NSDIctionary中存放@selector:

在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:@"…"];

出现警告的原因:http://www.tuicool.com/articles/iu6zuu

2、xib上使用了自定义控件时:

1)将xib上的控件的custom class修改成自定义控件类的类名

2)xib加载的控件的初始化方法为:

3、有一种对象的定义是这样的:

相关文章

网友评论

      本文标题:怎么在NSDIctionary中存放@selector

      本文链接:https://www.haomeiwen.com/subject/eagehttx.html