#unrecognized selector sent to class 问题解决git
unrecognized selector sent to class
复制代码
Xcode9做为最新的iOS的开发工具,相信不少小伙伴们都已经安装了, 你们对于各类兼容和bug修改头都大了吧.bash
原本,我还真的没有遇到过Xcode找不到文件或者方法的问题.app
以前有写过一个demo并上传到gitHub上面, 有朋友下载下来想要使用, 因而他将几个.h和.m等文件合并在一个文件夹内,直接放到项目中, 而后运行就崩溃了工具
因而就issues告诉到我,我开始觉得是他没有在使用的地方引用项目文件, 他却说已经引用了,而且方法名 方法都能调用, 编译都没有问题,可是一运行就报错了开发工具
我也蒙了,因而索要了一个问题demo, 拿过来一看,跟我以前的项目没有任何代码区别,仅仅是他将部分代码文件合并放在一个文件夹中.ui
因而编译运行,崩溃了,spa
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '+[UIBarButtonItem itemWithTarget:action:image:]: unrecognized selector sent to class 0x104e51c20'
复制代码
出现了这样的日志, 很明显的缘由就是一个没有找到该类的方法或者文件,3d
因而基于之前开发的经验,日志
前往targets的building setting 的Other Linker flags 添加如下两项 -all_load -ObjCcode
若是仍是不行的话,就把你须要添加的文件直接拖到该项中,手动关联便可 你以前的问题,就是由于这个引发的,只要在Other Linker flag 添加须要相应的文件路径便可 相似这样
再次编译运行,果真,项目顺利运行了, 因而将解决方案告知朋友,
而后令我崩溃的事情出现了
朋友说手抖删掉了某一个添加的索引,而后本身就不会添加了..
心中非常无语,告诉了方法以后,我又开始思考.这样的问题若是这么容易出现,每一个文件都须要手动添加索引的话,不就太麻烦了吗? other link flags 不少人都知道,项目中添加某些静态库可能会须要设置这个,可是通常是不须要的,不可能一个文件夹就能影响这么大的
因而想到是不是由于文件没有包含到对应的target中?
不须要一个一个文件手动添加索引了,只须要勾选一下便可 看来这个才是最好的解决方法.
这个应该是Xcode9的一个bug. 最起码我以前没有遇到过.....
因而在此记录一下这个问题,第一时间告诉到朋友,并分享给你们,方便你们遇到相似的问题可以找到解决方案