selector到底是什么?

看objc的源码[1], 知道真相的我眼泪掉下来:

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里面取method的name(也就是SEL)做对比, 相等就取到了

参考

  1. objc-sel.mm: http://www.opensource.apple.com/source/objc4/objc4-680/runtime/objc-sel.mm

selector到底是什么相关推荐

  1. 一起撸个朋友圈吧 图片浏览(上)【图片点击前景色】

    项目地址:github.com/razerdp/Fri- (能弱弱的求个star或者fork么QAQ) 上篇链接:一起撸个朋友圈吧 (Step6)- 评论对齐(点击评论对齐)[下] 下篇链接:一起撸个 ...

  2. Kubernetes学习笔记【2年以前的笔记】

    Kubernetes学习笔记 知识储备 熟悉linux基础命令 熟悉docker的基本原理和操作 了解ssl证书工作原理 了解负载均衡工作原理(L4/L7) 了解分布式概念 了解域名解析原理 了解网络 ...

  3. Java NIO:Buffer、Channel 和 Selector

    Buffer 一个 Buffer 本质上是内存中的一块,我们可以将数据写入这块内存,之后从这块内存获取数据. java.nio 定义了以下几个 Buffer 的实现,这个图读者应该也在不少地方见过了吧 ...

  4. 华为二面!!!面试官直接问我Java中到底什么是NIO?这不是直接送分题???

    华为二面!!!面试官直接问我Java中到底什么是NIO?这不是直接送分题??? 什么是NIO 缓冲区(Buffer) 缓冲区类型 获取缓冲区 核心属性 核心方法 非直接缓冲区和直接缓冲区 非直接缓冲区 ...

  5. epoll 浅析以及 nio 中的 Selector

    转载自 epoll 浅析以及 nio 中的 Selector 首先介绍下epoll的基本原理,网上有很多版本,这里选择一个个人觉得相对清晰的讲解(详情见reference): 首先我们来定义流的概念, ...

  6. 北京房租到底有多高? | 爬取北京海淀区一居室租房信息

    图片来源:花瓣网 文章来源 人工智能与大数据生活 如需转载,请联系原作者授权 最近北京房租成了热门话题,到底北京的房租有多高? 本次实战是爬取北京海淀区一居室的租房信息,共爬取了300套房源信息,看一 ...

  7. java中的NIO和IO到底是什么区别?20个问题告诉你答案

    摘要:NIO即New IO,这个库是在JDK1.4中才引入的.NIO和IO有相同的作用和目的,但实现方式不同,NIO主要用到的是块,所以NIO的效率要比IO高很多. 本文分享自华为云社区<jav ...

  8. epoll浅析以及nio中的Selector

    出处: https://my.oschina.net/hosee/blog/730598 首先介绍下epoll的基本原理,网上有很多版本,这里选择一个个人觉得相对清晰的讲解(详情见reference) ...

  9. Netty系列进阶篇一:阻塞和多路复用到底是个啥?

    文章目录 一.进阶篇:Netty封装了什么? 二.刨根问底:到底什么是阻塞?什么是多路复用器? 1.操作系统基础 1-1 用户态与内核态 1-2 系统调用 1-3 File Descriptor 文件 ...

最新文章

  1. linux mysql 5.6.22_LinuxCentOS6.0下编译安装MySQL5.6.22
  2. 右键脚本html,js实现右键自定义菜单
  3. RabbitMQ(一):RabbitMQ快速入门
  4. AngularJS快速入门
  5. java Interface
  6. Java-Java I/O 字节流之BufferedReader/BufferedWriter
  7. pyhanlp 提取关键词、自动摘要
  8. 怎样去掉警告 log4j:WARN No appenders could be found for logger
  9. 279. 完全平方数 golang BFS
  10. python红楼梦词频统计_用 Python 分析《红楼梦》(2)-阿里云开发者社区
  11. 如何卸载ubuntu下的terminator
  12. css 毛玻璃_css揭秘-视觉效果
  13. 读取jar包所在目录和jar包内文件
  14. python怎么读write_python中write方法是如何使用?
  15. Makefile 教程(超详细)
  16. Kubesphere 多集群管理 启用多集群
  17. 二阶带阻有源滤波器设计与仿真测试
  18. 最小生成树 Kruskal
  19. wireshark推荐书籍
  20. 蜀门linux服务端架设,蜀门1296LINUX私服服务端(红旗6架设视频+工具)

热门文章

  1. Git 客户端的下载和安装
  2. 系统优化之大循环在内,小循环主外为什么会效率高
  3. 组态王仿真学习案例之石灰石断烧系统,拥有实时历史曲线,报表
  4. Activiti子流程学习
  5. 基于Spring Boot的个人博客系统(源码+数据库)
  6. Outlook for Mac Beta现在支持共享日历和.ics文件
  7. 正整数前n项平方和与立方和的推导
  8. RTP有效负载(载荷)类型 (RTP Payload Type)
  9. suricata安装
  10. Vue项目中---文本框中加入simditor编辑器