selector到底是什么
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)做对比, 相等就取到了
参考
- objc-sel.mm: http://www.opensource.apple.com/source/objc4/objc4-680/runtime/objc-sel.mm
selector到底是什么相关推荐
- 一起撸个朋友圈吧 图片浏览(上)【图片点击前景色】
项目地址:github.com/razerdp/Fri- (能弱弱的求个star或者fork么QAQ) 上篇链接:一起撸个朋友圈吧 (Step6)- 评论对齐(点击评论对齐)[下] 下篇链接:一起撸个 ...
- Kubernetes学习笔记【2年以前的笔记】
Kubernetes学习笔记 知识储备 熟悉linux基础命令 熟悉docker的基本原理和操作 了解ssl证书工作原理 了解负载均衡工作原理(L4/L7) 了解分布式概念 了解域名解析原理 了解网络 ...
- Java NIO:Buffer、Channel 和 Selector
Buffer 一个 Buffer 本质上是内存中的一块,我们可以将数据写入这块内存,之后从这块内存获取数据. java.nio 定义了以下几个 Buffer 的实现,这个图读者应该也在不少地方见过了吧 ...
- 华为二面!!!面试官直接问我Java中到底什么是NIO?这不是直接送分题???
华为二面!!!面试官直接问我Java中到底什么是NIO?这不是直接送分题??? 什么是NIO 缓冲区(Buffer) 缓冲区类型 获取缓冲区 核心属性 核心方法 非直接缓冲区和直接缓冲区 非直接缓冲区 ...
- epoll 浅析以及 nio 中的 Selector
转载自 epoll 浅析以及 nio 中的 Selector 首先介绍下epoll的基本原理,网上有很多版本,这里选择一个个人觉得相对清晰的讲解(详情见reference): 首先我们来定义流的概念, ...
- 北京房租到底有多高? | 爬取北京海淀区一居室租房信息
图片来源:花瓣网 文章来源 人工智能与大数据生活 如需转载,请联系原作者授权 最近北京房租成了热门话题,到底北京的房租有多高? 本次实战是爬取北京海淀区一居室的租房信息,共爬取了300套房源信息,看一 ...
- java中的NIO和IO到底是什么区别?20个问题告诉你答案
摘要:NIO即New IO,这个库是在JDK1.4中才引入的.NIO和IO有相同的作用和目的,但实现方式不同,NIO主要用到的是块,所以NIO的效率要比IO高很多. 本文分享自华为云社区<jav ...
- epoll浅析以及nio中的Selector
出处: https://my.oschina.net/hosee/blog/730598 首先介绍下epoll的基本原理,网上有很多版本,这里选择一个个人觉得相对清晰的讲解(详情见reference) ...
- Netty系列进阶篇一:阻塞和多路复用到底是个啥?
文章目录 一.进阶篇:Netty封装了什么? 二.刨根问底:到底什么是阻塞?什么是多路复用器? 1.操作系统基础 1-1 用户态与内核态 1-2 系统调用 1-3 File Descriptor 文件 ...
最新文章
- linux mysql 5.6.22_LinuxCentOS6.0下编译安装MySQL5.6.22
- 右键脚本html,js实现右键自定义菜单
- RabbitMQ(一):RabbitMQ快速入门
- AngularJS快速入门
- java Interface
- Java-Java I/O 字节流之BufferedReader/BufferedWriter
- pyhanlp 提取关键词、自动摘要
- 怎样去掉警告 log4j:WARN No appenders could be found for logger
- 279. 完全平方数 golang BFS
- python红楼梦词频统计_用 Python 分析《红楼梦》(2)-阿里云开发者社区
- 如何卸载ubuntu下的terminator
- css 毛玻璃_css揭秘-视觉效果
- 读取jar包所在目录和jar包内文件
- python怎么读write_python中write方法是如何使用?
- Makefile 教程(超详细)
- Kubesphere 多集群管理 启用多集群
- 二阶带阻有源滤波器设计与仿真测试
- 最小生成树 Kruskal
- wireshark推荐书籍
- 蜀门linux服务端架设,蜀门1296LINUX私服服务端(红旗6架设视频+工具)