什么时候会报unrecognized selector的异常

当调用对象的某个方法的时候,如果在当前类中没有找到此方法,那么就到当前类的父类中去寻找,如果在父类中没有找到,那么就去父类的父类中去寻找,一直找到 NSObject 都没有这个方法,就会报 Unrecognized selector 的异常。

当调用对象的某个方法的时候,如果在当前类中没有找到此方法,那么就到当前类的父类中去寻找,如果在父类中没有找到,那么就去父类的父类中去寻找,一直找到 NSObject 都没有这个方法,就会报 Unrecognized selector 的异常。

当发送消息的时候,我们会根据类里面的methodLists列表去查询我们要动用的SEL,当查询不到的时候,我们会一直沿着父类查询,当最终查询不到的时候我们会报unrecognized selector错误。

当系统查询不到方法的时候,会调用+(BOOL)resolveInstanceMethod:(SEL)sel动态解释的方法来给我一次机会来添加,调用不到的方法。或者我们可以再次使用-(id)forwardingTargetForSelector:(SEL)aSelector重定向的方法来告诉系统,该调用什么方法,一来保证不会崩溃。

objc在向一个对象发送消息时,runtime库会根据对象的isa指针找到该对象实际所属的类,然后在该类中的方法列表以及其父类方法列表中寻找方法运行,如果,在最顶层的父类中依然找不到相应的方法时,会进入消息转发阶段,如果消息三次转发流程仍未实现,则程序在运行时会挂掉并抛出异常unrecognized selector sent to XXX 。

延伸阅读:

什么是React?

React是用于构建用户界面的JavaScript库,起源于Facebook的内部项目,该公司对市场上所有 JavaScript MVC框架都不满意,决定自行开发一套,用于架设Instagram的网站。于2013年5月开源。

React的早期原型被称为“FaxJS”,它是由Facebook工程师Jordan Walke开发,因为他深受XHP的影响,XHP是一个简单的PHP HTML组件框架。React于2011年首次亮相,首次用于Facebook的Newsfeed。第二年在Instagram中使用。2013年5月,React在美国JSConf开源。

React项目本身也越滚越大,从最早的UI引擎变成了一整套前后端通吃的Web App解决方案。衍生的React Native项目,希望用写Web App的方式去写Native App。如果能够实现,整个互联网行业都会被颠覆,因为同一组人只需要写一次UI ,就能同时运行在服务器、浏览器和手机。

文章标题:什么时候会报unrecognized selector的异常,发布者:Flawy,转载请注明出处:https://worktile.com/kb/p/53029

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
FlawyFlawy站长
上一篇 2023年5月29日
下一篇 2023年5月29日

相关推荐

  • 提升开发效率,降低成本!了解低代码开发平台的优势

    低代码开发平台(LCDP)是无需编码(0代码)或通过少量代码就可以快速生成应用程序的开发平台。通过可视化进行应用程序开发的方法(参考可视编程语言),使具有不同经验水平的开发人员可以通过图形化的用户界面,使用拖拽组件和模型驱动的逻辑来创建网页和移动应用程序

    2023年7月7日
    12100
  • 现在业界主要使用php的哪个框架

    现在业界主要使用php的框架有以下几个:1、Yii;2、CodeIgniter;3、CakePHP;4、PHPDevShell;5、Akelos;6、Symfony;7、Prado;8、 Zend;9、ZooP;10、 QPHP。Yii是一个基于组件的高性能的PHP的框架,用于开发大规模Web应用。…

    2023年2月19日
    20600
  • 什么是 MEAN 堆栈

    MEAN 是 MongoDB、Express.js、Angular.js 和 Node.js 的首字母缩写。它是 LAMP 的一种替代方案,基于 JavaScript 技术构建。JavaScript 是一种用于后端和前端开发的编程语言。MEAN 堆栈组件的作用有4种。 一、什么是 MEAN 堆栈? …

    2022年11月10日
    22900
  • 网络管理软件哪些

    网络管理软件有:1.迅捷智能网管交换机管理软件;2.Winshield内网管理软件;3.聚生网管远程管理工具。迅捷智能网管交换机管理软件是一款简单实用的网络交换机管理软件,能够帮助用户轻松管理同一网络下的所有交换机设备,在线对设备参数进行修改调整。 1.迅捷智能网管交换机管理软件 迅捷智能网管交换机…

    2023年1月11日
    1.3K00
  • 用JavaScript写成的JavaScript解释器的意义

    意义是:1、语法检查;2、代码最小化;3、语法扰乱器;4、语法整理器;5、语法高亮;6、代码分析器;7.代码清理器;8、自动完成;9、代码追踪;10、虚拟执行。javascript的jshint用的就是javascript的一个解释器,被javascript重新解释一遍。 1、语法检查 javasc…

    2023年2月22日
    11200
  • 前端开发工具有哪些

    前端开发工具有:一、WebStorm;二、HBuilder;三、Visual Studio Code;四、Sublime Text;五、Atom;六、Adobe Dreamweaver。WebStorm是JetBrains公司旗下一款JavaScript开发工具,功能齐全,集成度高,内置服务器调试、…

    2023年3月31日
    22900
  • 项目管理可行性是什么

    项目管理可行性指:1、管理上的可行性;2、技术上的可行性;3、经济上的可行性;4、社会适应性上的可行性。其中,管理上的可行性是指指管理人员对开发应用项目的态度和管理方面的条件。 1、管理上的可行性 指管理人员对开发应用项目的态度和管理方面的条件。主管领导不支持的项目肯定不行。如果高中层管理人员的抵触…

    2023年1月1日
    88400
  • 何时应该使用自动化测试而非手动测试

    摘要:在软件测试领域中,自动化测试和手动测试之间的选择关键在于两者的适用场景和效能。自动化测试是当重复执行频次高1、测试周期长2、测试用例稳定且不经常变动3、以及量化ROI(投资回报率)明确时最为推荐的做法。自动化测试能提供快速反馈、提高精准度、节约时间和成本,并支持持续集成和交付。在项目初期,尤其…

    2023年11月22日
    600
  • 任务管理怎么做

    任务管理的做法有:1、任务分配落实到个人;2、任务完成时间要具体;3、加强沟通以统一信息;4、定期检查任务进度;5、用四象限厘清任务事件;6、使用PDCA管理执行过程;7、借助任务管理软件。任务分配落实到个人,有助于任务执行过程中的问题追责。 一、任务分配落实到个人 在进行任务分配时应该落实到个人,…

    2023年4月21日
    13000
  • talend这个软件怎么用

    使用 Talend 软件的步骤是:一、下载并安装 Talend 软件;二、创建一个新项目;三、创建一个新作业;四、添加组件;五、连接组件;六、设置组件属性;七、运行作业;八、发布作业。首先需要从 Talend 官网上下载 Talend 软件,选择需要的版本并下载。 一、下载并安装 Talend 软件…

    2023年5月31日
    28300

发表回复

登录后才能评论
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部