Selector 是什么

selector 到底是什么

1
2
3
4
5
6
7
8
9
10
11
static SEL sel_alloc(const char *name, bool copy)
{
selLock.assertWriting();
return (SEL)(copy ? strdup(name) : name);
}

const char *sel_getName(SEL sel)
{
if (!sel) return "<null selector>";
return (const char *)(const void*)sel;
}

sel_alloc 可以看出来,SEL 就是直接使用当前的字符串,或者把当前的字符串拷贝一份,然后char * 强转为 SEL.
sel_getName 可以看出,SEL 类型可以强转为 char *

也就是说 SEL 就是字符串,那么@selector(XXX)就是字符串 XXX。然后从 class 里面取方法就是拿这个字符串跟 class 里面的 methodList 里面取 methodname(也就是 SEL)作对比,如果相等,就取到了。

作者

shouyi.www

发布于

2019-12-04

更新于

2025-01-30

许可协议

评论

Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×