美文网首页
iOS关于工程引入AsyncDisplayKit

iOS关于工程引入AsyncDisplayKit

作者: xiongyw | 来源:发表于2016-06-22 10:50 被阅读0次

    这2天有个小伙子问到在工作区xcworkspace,引入2个工程,一个是自己的项目,一个是AsyncDisplayKit,编译通过了,但是一运行就提示AsyncDisplayKit中的方法不存在,百思不得其解,他将代码发给我。

    我检查了一番,确实是按照AsyncDisplayKit中所提示的来的,Other linker flags也设置了,跑起来也确实出现 unrecognized selector sent to instance 0x7fa50484a200

    直观的看起来,就是提示AsyncDisplayKit的方法找不到,但是在Build Phases中已经添加了libAsyncDisplayKit.a。静下心来仔细思考一下,我就再次去检查了下 Other linker flags的设置,果不其然,他写了 -lc++与-objC 。哎发现问题之后总是感觉如此简单,  我淡定的将

    -objC 修改为 -ObjC, 保存运行。 一切OK。

    到这里,问题已经解决,哪么也许有人会问这2者有啥区别。

    第一,OC语言是严格区分大小写的。

    第二,源代码到可执行文件的过程比较复杂, 源代码 > 预处理器 > 编译器 > 汇编器 > 机器码 > 链接器 > 可执行文件。哪么-ObjC的作用就是 链接器 > 可执行文件这步的催化剂,加了这个-ObjC后,链接器就会把静态库中所有的Objective-C类和分类都加载到可执行文件中,但是这里我们大小写错了,因此最后缺少了这步,也就是说我们的执行文件当然也就找不到对应的class与method了。

    以上为个人理解,如有不正确,请指出,谢谢。

    相关文章

      网友评论

          本文标题:iOS关于工程引入AsyncDisplayKit

          本文链接:https://www.haomeiwen.com/subject/efzgdttx.html