选择器(Selectors)

最好用的 5 个 Vue select 单选多选下拉组件 - 卡拉云 单选 / 下拉 / 多选(select)组件在搭建 Vue 的 app 中特别常用,Vue select 除了用鼠标点选外,还可以有更多样的功能,比如搜索过滤,树状结构,tab 分组,按组选择等。这些高级功能都可以在第三方组件中找到,本文记录了我自己使用多年最好用的 5 款 Vue select 组件,每一款都经过我实际测试,推荐给大家。 阅读详情

《ObjC.pdf》

在Objective-C中,选择器selector有两种含义。其一是当在源代码中向一个对象发送消息时,用它来引用一个方法的名字;其二是当源代码编译过后,用它来引用取代名字的唯一标识符。编译后的选择器类型为SEL。所有相同名字的方法都有相同的选择器。你可以使用选择器来调用对象的方法——这为在Cocoa中实现target-action设计模式打下了基础。

方法和选择器

为了提高效率,在编译后的代码中,方法选择器不会使用完全ASCII名字。编译器将每个方法的名字写入一张表,然后将该名字与该方法在运行时的唯一标识符配对。运行时系统确保每个标识符都是唯一的:不存在相同的两个选择器,同名的所有方法都有相同的选择器。

SEL和@selector

编译后的选择器被赋予一个特殊类型,SEL,以区别于其他数据。有效的选择器永远不会为0。你必须让系统来给方法赋予SEL标识符,对它们的随意指定是无效的。

@selector指令可以用来引用编译后的选择器,不采用方法的完全名字。下例中,setWidth:height:的选择器被赋给了setWidthHeight变量:

SEL setWidthHeight;
setWidthHeight = @selector(setWidth:height:);
在编译时使用@selector指令为SEL变量赋值非常高效。在某些情况下,可能需要在运行时将一个字符串转换为一个选择器,这时可以使用NSSelectorFromString函数来实现:

setWidthHeight = NSSelectorFromString(aBuffer);
相反方向的转换也是可能的,可以使用NSStringFromSelector函数为一个选择器返回一个方法名:

NSString *method;
method = NSStringFromSelector(setWidthHeight);


方法和选择器

编译后的选择器只是表示方法的名称,并不是方法的实现。例如,一个类的display方法与其他类中定义的display方法有相同的选择器。这个概念对于多态和动态绑定非常重要,它使你可以向不同类的接收者发送相同的消息。如果每个方法实现都有一个选择器,那么消息与函数调用就没什么区别了。

同名的类方法和实例方法也有相同的选择器。但是,因为他们处在不同的域,因此不会被混淆。一个类除了可以定义名为display的实例方法外,还可以定义一个名为display的类方法。


方法返回和参数类型

消息机制只能通过选择器来访问方法的实现,因此它对所有具有相同选择器的方法一视同仁。它会从选择器中找到方法的返回类型,以及它的参数数据类型。因此,除了发送给静态类型接收者的消息外,动态绑定要求所有同名方法的实现都要有相同的返回类型和相同的参数类型。(对这条规则来说,静态类型的接收者是一个例外,因为编译器能够从类的类型了解方法实现。)

尽管同名的类方法和实例方法有相同的选择器标识,但它们可以有不同的参数类型和返回类型。


在运行时改变消息

在NSObject中定义的performSelector:、performSelector:withObject:和performSelector:withObject:withObject:方法,使用SEL标识符作为它们的初始参数。这三个方法都直接映射到消息函数。例如:

[friend performSelector:@selector(gossipAbout:) withObject:aNeighbor];
等价于:

[friend gossipAbout:aNeighbor];

这些方法使得在运行时改变消息成为可能,正如能够改变接收该消息的对象一样。变量名可以在消息表达式任何一部分使用:

id   helper = getTheReceiver();
SEL  request = getTheSelector();
[helper performSelector:request];

在这个例子中,接收者(helper)在运行时被选择(通过虚拟的getTheReciever函数),接收者要求执行的方法(request)也在运行时确定(同样使用虚拟的getTheSelector函数)。

注意:performSelector:和它的伙伴方法返回类型为id的对象。如果执行后的方法返回一个不同的类型,它将被转换为适当的类型。(但是,这种转换并不适用于所有类型,该方法将返回一个指针或兼容指针的一个类型。)


Target-Action设计模式

在处理用户-接口控件方面,AppKit充分发挥了在运行时改变接收者和消息的能力。

NSControl对象是一个图形设备,可以用来向应用程序发送指令,。大多实现了现实世界中的控制装置,例如button、switch、knob、text field、dial、menu item等。在软件中,这些设备处于用户和和应用程序之间。它们解释来自硬件设备,如键盘和鼠标的事件,并将它们翻译成应用程序特定的指令。例如,名为“Find”的按钮将会把鼠标点击事件翻译成开始搜索的应用程序指令。

AppKit为创建控件设备定义了模板,并定义了一些自己的现成设备。例如,NSButtonCell类定义了一个对象,可以指派给一个NSMatrix实例,并初始化它的大小、名称、图片、字体和键盘快捷键。当用户点击按钮(或使用键盘快捷键)时,NSButtonCell对象发送消息,指示应用程序工作。为此,NSButtonCell对象不仅要初始化图像、大小和名称,还要确定消息要发往何方和发给谁。相应地,NSButtonCell实例可以为一个action消息(它将在自己发送的消息中使用的对象选择器)和一个target(接收该消息的对象)进行初始化。

[myButtonCell setAction:@selector(reapTheWind:)];
[myButtonCell setTarget:anObject];
当用户点击了相应的按钮,该按钮单元将使用NSObject协议方法performSelector:withObject:发送消息。所有action消息带有单独一个参数,既发送该消息的控件设备的id。

如果Objective-C不允许改变消息,所有的NSButtonCell对象将不得不发送相同的消息,方法的名字将在NSButtonCell源代码中写死。与简单的实现将用户action转换为action消息的机制不同,按钮单元和其他控件不得不限制消息的内容。受限的消息会使很多对象难以响应多于一个的按钮单元。要么每个按钮有一个target,要么target对象能发现消息来自于那个按钮,并做相应处理。每次在重新布局用户接口时,你也必须实现响应action消息的方法。动态消息的缺乏将会带来不必要的麻烦,但Objective-C很好地避免了这一点。


避免消息错误

如果一个对象接收了一条消息去执行不归它管的方法,就会产生错误结果。这和调用一个不存在的函数是同一类错误。但是,因为消息发生在运行时,错误只有在程序执行后才会出现。

当消息选择器是常数并且接收对象类已知时,处理这种错误相对容易。在写程序时,你可以确保接收者能够响应。如果接收者时静态类型,编译器将替你完成该测试。

但是,如果消息选择器或接收者是变化的,那么只能在运行时进行相关测试。NSObject类中定义的respondsToSelector:方法可以测试一个接收者是否能够响应某条消息。它将方法选择器作为参数并返回接收者是否已经访问了与选择器相匹配的一个方法:

if ( [anObject respondsToSelector:@selector(setOrigin::)] )
    [anObject setOrigin:0.0 :0.0];
else
    fprintf(stderr, "%s can’t be placed\n",
        [NSStringFromClass([anObject class]) UTF8String]);
当你向一个你在编译时无法控制的对象发送消息时,respondsToSelector:运行时测试非常重要。例如,如果你写了一段代码向一个对象发送消息,而这个对象是一个他人可以设定值的变量,那么你就要确保接收者实现了响应该消息的方法。

注意:一个对象在收到不是自己负责直接响应的消息时可以转发该消息给其他对象。这种情况下,从调用者的角度来看,对象直接处理了消息,尽管该对象是通过转发消息给其他对象来处理的。










Scrapy爬虫框架 Selectors 数据选择器 在本教程中,我们深入探讨了Scrapy中Selectors选择器的各项功能,从基本操作到高级应用,再到与正则表达式的结合和数据提取方法。通过学习这些内容,你应该已经掌握了如何使用选择器来高效、精确地从HTML或XML文档中提取所需的数据。通过本教程提供的实例和应用场景的讲解,你可以在实际项目中灵活运用这些技巧,完成各种网页数据抓取任务。无论是电商数据分析、新闻聚合、社交媒体监控,还是其他领域的网络爬虫项目,这些技能都将成为你编程工具箱中不可或缺的一部分。 阅读详情

相关推荐

Scrapy框架 Selectors 数据选择器应用案例

在学习Scrapy时,数据选择器(Selectors)是一个重要的概念,它让我们能够从抓取的网页中提取出需要的数据。通过使用XPath和CSS选择器,开发者可以准确地定位网页中的元素,提取文本、属性和节点等内容。熟悉这些选择器的用法,不仅能够提高爬虫的效率,还能帮助更好地理解网页结构。无论是提取商品信息、新闻内容,还是社交媒体的帖子,掌握Selectors都是一项必备技能。本练习将通过实际生活中的示例,引导你深入理解和使用Scrapy 2.6中的Selectors。

Mr数据杨 454

《Vue移动端座位选择》开源项目常见问题解决方案

《Vue移动端座位选择》开源项目常见问题解决方案 1. 项目基础介绍和主要编程语言 《Vue移动端座位选择》是一个类似猫眼、淘票票的电影移动端锁座页面的开源项目。该项目基于Vue.js框架,利用现代前端技术实现了一个功能丰富的座位选择系统。主要编程语言为JavaScript,同时使用了Vue.js框架和相关的库。 2. 新手常见问题及解决步骤 问题一:如何运行和调试项目? 解决步骤: 克隆项目到...

gitblog_00218的博客 567

seat-select:类似猫眼,淘票票,目前最流畅的vue选座移动端,座位选座,情侣座,座位留空检测,智能选座算法,座位导航栏,座位缩略图

seat-select (vue移动端座位选择) 座位图体系项目导航 if this project is useful to you :D , Please star this project~ 如果这个项目对你有帮助 :D 请点个star吧~ 此次项目是基于vue编写的类似淘票票和猫眼的电影移动端锁座页面,经过超过百个影厅的测试,其中包含功能 座位图生成 座位预览图生成 座位留空检测 座位智能选择最优座位算法 自适应影厅大小 座位图左侧导航栏的过道检测 普通座位的选择逻辑 情侣座位的选择逻辑 项目截图 之后的计划 文档补全,功能实现解析 后台控制端,可以编辑座位图提供接口生成座位图JSON(2019.06.03开发完成,参考项目导航) 赞助者名单 首先特别感谢赞助者的所有朋友们,真的特别感谢!(所有贡献者列表请在此处) 智能选座示例 以下为多个影厅的智能选座gif图演示 智能选座示例

【亲测免费】 探索智能座位选择系统:Seat-Select

探索智能座位选择系统:Seat-Select 项目简介 是一个开源的在线座位选择系统,专为各种活动、会议和电影院场景设计,提供了一个直观且高效的座位预览和预订功能。该项目利用现代Web技术和后端框架,旨在简化座位管理并提升用户体验。 技术栈分析 前端 Vue.js: Seat-Select 使用 Vue.js 这个流行的前端框架构建,保证了界面的响应式和组件化开发,提升了开发效率。 Vuetif...

gitblog_00070的博客 926

bili-seat-selector:某站的抢票选座脚本

bili-seat-selector 某站的抢票选座脚本 使用方法 用某些方式将select.js插入选座抢票页面 然后打开控制台并输入select();来运行 基本原理 将座位图当作一个2D Matrix Array 以每行座位为x,每列为y X序列--------> Y x x x x x x 序 x 列 x | x | x | x | x V x 将这个matrix array转换成HTML式的表达方式 <ul> <li>x</li> <li>x</li> </ul> <ul> <li>x</li> <li>x</li> </ul> for (var i = 0; i < document.children.length; i++) {

【科研学习】Demo3D2015安装包以及图文安装步骤

安装包 点击下图的.exe文件,安装 不需要解压,打开注册机 如下图: 点击上图的.exe文件,出现下图 先点击 patch 打开安装目录下的Demo3D.licensing.dll文件,然后点击Generate,生成dvt-license文件,保存即可 打开安装完成的Demo3D 2015(64-bit),一般破解没完成的,会出现一个request a license 的问题,点击find license 的那一行 点击后找到自己Generate,生成dvt

KaelCui的博客 1万+

PostCSS Custom Selectors:简化CSS选择器的利器

PostCSS Custom Selectors:简化CSS选择器的利器 在现代前端开发中,CSS的复杂性日益增加,尤其是在处理复杂的选择器时。为了简化这一过程,PostCSS Custom Selectors应运而生。本文将详细介绍这一开源项目,帮助你更好地理解和使用它。 项目介绍 PostCSS Custom Selectors是一个基于PostCSS的插件,旨在实现W3C CSS Exten...

gitblog_00987的博客 691

【首份】2023年30米分辨率土地利用遥感监测数据

为了恢复和重建我国土地利用变化的现代过程,更好地预测、预报土地利用变化趋势,地球资源数据云以美国陆地卫星Landsat 遥感影像数据作为主信息源,结合Sentinel系列数据,通过人工目视解译和机器学习方法,建立了国家尺度1:10 万比例尺多时期土地利用/土地覆盖遥感监测数据库(CNLUCC)因早期Landsat数据时空覆盖缺失,1972-1977年合成第一期数据,1978-1985年合成第二期数据,1986年起每年度生成一期数据。投影:Albers正轴等面积双标准纬线圆锥投影南标准纬线:25°N。

地球资源数据云的官方博客 3682

JQuery Selectors(选择器) 方法说明

JQuery Selectors方法说明 基本选择器 $("#myDiv")匹配唯一的具有此id值的元素$("div")匹配指定名称的所有元素$(".myClass")匹配具有此class样式值的所有元素$("*")匹配所有元素$("div,span,p.myClass")联合所有匹配的选择器 层叠选择器 $("form input")后代选择器,选择ancesto...

weixin_30726161的博客 146

Ubuntu22.04 网络图标消失与连接故障排查指南(附实战修复流程)

本文详细介绍了Ubuntu22.04系统中网络图标消失与连接故障的排查与修复方法。通过ifconfig、dhclient等命令诊断问题,提供从紧急恢复网络连接到深度排查的完整解决方案,帮助用户快速恢复网络功能并预防类似问题再次发生。

weixin_28481133的博客 287

卫星图像检测,分割,跟踪,超分辨率,数据集调研,以及论文笔记

目标检测,针对物体有很多类如桥,烟囱,罐子等,有静态图像下的检测,也就是图像源头多来自谷歌地图,但是前后帧没有任何联系,并且谷歌地图相对来说比较清楚,难度小一点,也有粗粒度以及较细粒度的检测,然后卫星视频的数据集较少,则可以通过前后帧的联系来辅助检测,并且卫星帧基本上只对车,船,飞机,火车进行检测,没有进行细粒度的检测即将车辆分类为卡车,皮卡,小轿车,但是关船,则可以分类为货船以及军舰,因为目前的卫星视频中小车实在太少了,难以进行更细粒度的检测。luojia 三号卫星。

zhangzhao147的博客 4707

【Trino 选择器selectors 的匹配原理】

目录 资源组配置管理者 load 的作用: 选择器selectors 的来源有 2个 client-tags 的指定方式 客户端 jdbc selectors 的匹配 selectors 的匹配结果的选择 资源组配置管理者 当选择 resource-groups.configuration-manager=db 时,资源组配置管理者ResourceGroupConfigurationManager 的实现类是 DbResourceGroupConfigurationManager

laidongxu666的博客 600

Docker新手必看:解决‘Unable to find image’错误的完整指南

本文针对Docker新手常见的‘Unable to find image’错误,提供了完整的排查与解决指南。文章深入剖析了权限不足、网络连接失败、Docker服务未运行等核心原因,并给出了将用户加入docker组、配置镜像加速器等实用解决方案,帮助读者彻底理解并解决镜像拉取问题。

weixin_29230901的博客 244

Playwright Selectors 类深度解析:注册自定义选择器引擎与测试 ID 属性

Playwright 的 `Selectors` 类(自 v1.8 起提供)是定制元素定位能力的核心入口:通过 `Selectors.register` 安装自定义选择器引擎,用 `Selectors.setTestIdAttribute` 切换 `getByTestId` 所依据的属性名。本文基于 Playwright 官方 API 文档 [class-selectors](https://li

gitblog_00199的博客 281

【C++】【STL算法】数据窄化及代码安全性

本文系统探讨了C++工程中数据窄化(narrowing conversion)的隐患与解决方案。数据窄化指将高精度/大范围类型转换为低精度/小范围类型,虽语法合法但会导致静默精度损失。其危险性体现在:错误隐蔽、STL会放大问题、数值错误具有传播性。现代C++要求窄化必须显式声明,文中提出四种工程解决方案:显式转换、边界统一转换、范围检查转换和使用GSL工具。建议在系统边界集中处理窄化,保持计算链路类型一致性,并通过分层策略(建模用double,控制用float)确保数值稳定性。核心思想是让窄化成为清晰可控的

Double Galaxy 80

【全覆盖算法】栅格地图实现布氏单元分解算法+栅格地图实现牛耕Boustrophedon Cellular Decomposition Path Planning

本文先对做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容。

qq_35635374的博客 282

CSS Selectors Level 4 中新增的选择器

CSS 选择器在实践中是非常常用的,无论是在写样式上或是在 JS 中选择 DOM 元素都需要用到。在 CSS Selectors Level 4 中,工作组继续为选择器标准添加了更丰富的选择器。下面我们来了解一下。 :is() :is 是一个用于匹配任意元素的伪类,使用方法很简单,只需要将选择器列表传入即可,也就是说,:is()的结果也就是传入的选择器列表中选中的元素。 那么这个选择器有什么用呢?...

大前端 305

Windows 11 - 打开操作安全中心提示 “需要使用新应用以打开此 Windowsdefender 链接“ 解决方案(电脑更新了 Win11 系统版本后,想关闭病毒防护盾牌的时候提示打不开)

Windows 11 - 打开操作安全中心提示 "需要使用新应用以打开此 Windowsdefender 链接" 解决方案(电脑更新了 Win11 系统版本后,想关闭病毒防护盾牌的时候提示打不开),当您点击任务栏上要关闭安全中心防护设置时,这种情况打不开怎么解决,怎么办,Windows安全中心,病毒和威胁保护,账户保护,防火墙和网络保护,设备安全性。

🏆 前端领域优质创作者 1万+

Scrapy Selectors 选择器

0. 1.参考 《用Python写网络爬虫》——2.2 三种网页抓取方法 re / lxml / BeautifulSoup 需要注意的是,lxml在内部实现中,实际上是将CSS选择器转换为等价的XPath选择器。 从结果中可以看出,在抓取我们的示例网页时,Beautiful Soup比其他两种方法慢了超过6倍之多。实际上这一结果是符合预期的,因为lxml和正则表达式模块都是C语言...

weixin_30566149的博客 141

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Scrapy(四):selectors 选择器

通过上期的简单介绍,我们已经可以新建一个简单的spider,但是细心的网友发现,我们在解析HTML网页的时候是: tds = BeautifulSoup(response.text, 'lxml').find_all('tr', bgcolor='#FFFFFF')#解析网页 我们使用到了BeautifulSoup: Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式,但是缺点慢。上期网友反馈使

sophicchen的专栏 398

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

html选择器有哪些child,子选择器 | Child selectors

子选择器 | Child selectors该子元素组合因子(>)被放置在两个CSS选择器之间。仅当第二个选择器所匹配的元素是第一个选择器所匹配的元素的子节点时,该子元素选择器才会匹配那些子元素。/* List items that are children of the "my-things" list */ul.my-things > li {margin: 2em;}由第二个...

weixin_39580041的博客 411

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

html后代选择器的语法,后代选择器 | Descendant selectors

后代选择器 | Descendant selectors后代组合因子 ——通常是通过一个单一的sapce()字符来表示——它结合了两个选择器,且如果第二个选择器所选择的元素的一些祖先元素为第一选择器所匹配,那么它就会选择出那些满足该条件的,由第二个选择器所选择出的那些元素。使用后代组合因子的选择器称为后代选择器。/* List items that are descendants of the...

weixin_39670464的博客 754

stylelint no-duplicate-selectors 规则详解:如何精准拦截重复选择器

`no-duplicate-selectors` 是 stylelint 内置核心规则之一,用于禁止样式表中重复出现的选择器,帮助开发者从源头避免冗余代码、层级覆盖混乱和 CSS 体积膨胀。本篇文章将完整讲解该规则的判定范围、配置选项、消息格式,并结合当前仓库中的源码实现与测试用例,深入剖析它如何做到"不同写法也能识别重复"的规范化比较机制,读完你既能开箱即用地配置,也能理解其底层原理。 ##

gitblog_00382的博客 219

Subtitle Edit:从裸视频到双语 SRT 字幕的完整开源工作流

手头只有一个没有字幕的视频,或一堆硬编码成图片的字幕,想快速产出一份能用的 .srt?Subtitle Edit 就是为此而生——这款免费开源的字幕编辑器支持 380+ 种格式,语音识别、OCR、时间轴同步、翻译到导出全在一个界面里,三大平台都能跑。 ## 🎯 它到底解决什么问题 - **视频里只有画面没有字幕。** 手上有几十集内容想逐集配字幕,逐句手敲既慢又累。Subtitle Edit

gitblog_00605的博客 667

jQuery UI API 类别 - 选择器(Selectors)

摘要:jQuery UI 扩展了4个关键选择器(:focusable、:tabbable、:data(key)、:data()),主要用于无障碍访问和键盘导航场景。其中:focusable选择可获焦元素(含tabindex="-1"),:tabbable仅选择可通过Tab键访问的元素(tabindex≥0)。这些选择器解决了原生CSS选择器无法处理的跨浏览器焦点管理问题,被广泛应用于Dialog等组件的焦点控制。需注意元素必须可见且依赖jQuery UI库,最新1.14.1版本已稳定支持

likuolei的博客 806

npm/cli 依赖选择器(Dependency Selectors)完整指南:用 CSS 语法查询依赖图

依赖选择器(Dependency Selector)是 npm/cli 为 `npm query` 命令引入的一套全新查询语法:它以 CSS Selectors 4 为灵感,把依赖图(dependency graph)抽象成可被对象模型、元数据与选择器语法统一查询的结构,让你能用类似 CSS 的写法回答关于依赖、依赖关系与关联元数据的复杂问题。读完本文,你将掌握 `:semver()`、`:out

gitblog_00099的博客 374
上一篇: Objective-C中的self和super
下一篇: Mac OS X地址簿编程指南
datacloud
博客等级 码龄15年 0粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值