相同Swift代码在一个项目正常,另一项目报unrecognized selector错误如何解决
unrecognized selector IBAction 报错排查方案
报错信息:Thread 1: "-[Destini_iOS13.ViewController IBAction:]: unrecognized selector sent to instance 0x15ff0c250"
该错误为UIKit运行时常见错误,不属于业务代码逻辑问题,本质是运行时向ViewController实例发送了不存在的IBAction方法调用,你描述的「两份代码完全一致运行结果不同」的情况,是因为只复制了swift业务代码,没有同步复制官方项目的Interface Builder(IB)配置,和资源损坏没有必然联系。
排查步骤
- 打开项目的
Main.storyboard文件,选中报错场景对应的ViewController,点击右侧检查器面板最右侧的「连接检查器」(箭头形状的图标) - 查看
Received Actions分类下的所有连线,所有带黄色感叹号标识的都是无对应实现的无效连线,点击连线旁的叉号直接删除 - 右键点击触发报错的交互控件(通常是按钮),查看
Sent Events下Touch Up Inside绑定的方法名,确认和代码中@IBAction修饰的方法名、参数数量完全匹配,存在不匹配的情况直接删除旧连线重新绑定 - 清空Xcode缓存后重新构建:按
Command + Shift + K清空构建缓存,再按Command + Option + Shift + K清空全部派生数据,重新运行项目 - 打开项目设置的
Build Phases标签,检查Compile Sources列表,确认ViewController.swift已被加入编译列表,没有被意外移除
按上述步骤操作后即可解决99%的同类报错。
内容的提问来源于stack exchange,提问作者GGGGGG
相关产品推荐
相关产品推荐

