Cordova报错:'-[__NSDictionaryM cordovaSettingForKey:]: unrecognized selector sent to instance '

公司使用Cordova与原生交互,以前用的时候直接把Cordova的源码放在项目中,前几天决定将Cordova以及其插件一起封装成framework,方便供其他项目集成使用,小姐姐我觉得封装有啥难的,不就是按照静态库的步骤,封装起来放到项目中就可以直接使用了嘛,然鹅当我封装后集成到项目中后,一打开Cordova的webView,就报如下错误:

错误指向CDVViewController中的ViewDidLoad的这句代码上:

于是我在该方法前打断点调试,发现并没有空指针之类的。百度各种搜索,也找不到解决方案,此报错折磨了我整整一个下午和晚上,加班到晚上8点还是没有解决该报错的我心如死灰,绝望地下班了。

回到家后我还是不死心啊!!!拿出电脑,将Cordova的源码又重新封装了一遍,以确保不是在封装过程中产生的错误,但是放到项目中依然有此报错,再次绝望......知道百度搜不出结果,我就打开Stack Overflow进行搜索,一搜就出来结果,第一条回答:

点开后:

提示在Building Settings-Other Linker Flags中加上-ObjC:

于是我在集成的项目中加上了,握草,果真好了,不会闪退了,可以正常使用了,我的内心一万头草泥马狂奔,竟然是因为这个小问题......而且竟然在Stack Overflow上一搜就立马能找到解决方案,而我却在百度上浪费了半天时间......


如果你不想看我上面一顿无聊的BB和我绝望的心路历程,那就直接看总结吧

总结:

1、解决该问题的方法是在Building Settings-Other Linker Flags中加上-ObjC:原因是这个framework中有分类,报错的这个方法正是分类中的方法,而-ObjC的作用就是把静态库中所有的Objective-C类和分类都加载到最后的可执行文件中。

2、作为程序员的我们,遇到问题一定要习惯性地使用Stack Overflow,尽管上面都是英文,对我们来说看起来有些吃力,但是真的能解决各种奇葩问题呀!!!

你可能感兴趣的:(Cordova报错:'-[__NSDictionaryM cordovaSettingForKey:]: unrecognized selector sent to instance ')