最近在做一个项目的时候,需要使用到一个第三方库,这个库的使用向导里面特别说明,在添加完该库后,需要在Xcode的Build Settings下Other Linker Flags里面加入-ObjC标志,这个标志以前没使用过,所以我就专门研究了一下它的作用。

之所以使用该标志,和Objective-C的一个重要特性:类别(category)有关。根据这里的解释,Unix的标准静态库实现和Objective-C的动态特性之间有一些冲突:Objective-C没有为每个函数(或者方法)定义链接符号,它只为每个类创建链接符号。这样当在一个静态库中使用类别来扩展已有类的时候,链接器不知道如何把类原有的方法和类别中的方法整合起来,就会导致你调用类别中的方法时,出现"selector not recognized",也就是找不到方法定义的错误。为了解决这个问题,引入了-ObjC标志,它的作用就是将静态库中所有的和对象相关的文件都加载进来。

本来这样就可以解决问题了,不过在64位的Mac系统或者iOS系统下,链接器有一个bug,会导致只包含有类别的静态库无法使用-ObjC标志来加载文件。变通方法是使用-all_load 或者-force_load标志,它们的作用都是加载静态库中所有文件,不过all_load作用于所有的库,而-force_load后面必须要指定具体的文件。

明白了这些,我就清楚,这个第三方库中一定是定义了一些类别来扩着已有类,打开头文件,发现果然如此。

转载于:https://www.cnblogs.com/yashi88/p/3551947.html

Xcode里-ObjC, -all_load, -force_load相关推荐

  1. 微信ios接入-Objc -all_load的坑

    微信的文档上说明是: 在你的工程文件中选择Build Setting,在"Other Linker Flags"中加入"-Objc -all_load", 首先 ...

  2. c语言windows.h file not found,XCode里遇到 #include XXX.hfile not found的解决方案

    最近在学习如何在C++里调用Java方法,遇到提示 #include file  not  found 的问题.也google了好久都没有找到合适的解决方案. 认真的研究了下xcode导入h头文件的的 ...

  3. xcode里的描述文件 位置

    xcode里的描述文件 位置 ~/Library/MobileDevice/Provisioning Profiles

  4. Xcode中Objc动态调用方法同时避免警告的几个办法

    我们在Xcode中使用objc写代码的时候往往会碰到动态调用方法的时候. 如果是静态调用这很常见,不会有任何问题: [self performSelector:@selector(method)]; ...

  5. iOS开发-Xcode入门ObjC程序

    元旦三天假跟妹子冷战一天半,剩下的半天觉得无聊,可以写点东西,折腾了下xCode 6.1,虽然iPhone6比较丑,但是不影响IOS在高端机上面的地位,ObjC是扩充C的面向对象编程语言.主要使用于M ...

  6. 怎样解决xcode里开发cocos2dx改动lua脚本后不刷新的问题

    用xcode来开发cocos2dx,结果发现一个非常纠结的问题,假设我一旦改动了一个Lua文件,我必须clean之后再build,否则改动的Lua文件不会体现出来.这是一个非常令纠结的结果,特别是我要 ...

  7. xcode中不小心删除了xcode里面的storyboard怎么办?

    我们知道,现在苹果是主推使用故事版进行iOS开发的,它可以让我们进行可视化界面的设计.可是我们往往在storyboard上为界面的设计花费大量的时间和精力,不断地添加视图.添加控件.设置约束.设置se ...

  8. 当xcode里点运行出现treating unicode character as whites

    可能是由于粘贴网页上的代码的时候两行之间的回车引起的,两行之间重新输入回车就行......删掉重新写一遍就ok了 转载于:https://www.cnblogs.com/56ik/p/5262795. ...

  9. Xcode - Other Linker Flags

    为什么80%的码农都做不了架构师?>>>    背景 在ios开发过程中,有时候会用到第三方的静态库(.a文件),然后导入后发现编译正常但运行时会出现selector not rec ...

最新文章

  1. python中的正则表达式
  2. python 播放视频 ftp_利用Python快速搭建HTTPFTP服务器
  3. 解决ssh连接Linux服务器经常掉线不稳定的问题
  4. Mybatis-typeAliases的作用
  5. ASP.NET Web Api 实现数据的分页
  6. Redis学习第八课:Redis高级实用特性(一)
  7. https://akaedu.github.io/book/ch32s02.html
  8. 使用 IDEA 创建 Scala 工程
  9. (一)Redis实战教程之redis简介
  10. 有道云笔记云端图片炸裂、无法显示及同步问题
  11. 手把手教你单片机HAL库开发——中断,通信、串口
  12. 2021上海第34届创业连锁加盟展会
  13. 裸金属服务器性能描述,金山云-文档中心-集群支持裸金属服务器
  14. Flying Saucer一些问题
  15. 论文中参考文献的引用步骤
  16. 学习:C# 中的委托和事件(转)
  17. linux 支持7代cpu,Intel第七代cpu有哪些型号
  18. 物联网目前的应用场景有哪些
  19. 【IUI 2020】人在回路机器学习——Human-in-the-Loop AI in Government: A Case Study
  20. js中offsetHeight,offsetWidth,offsetTop,offsetLeft属性的使用

热门文章

  1. ICCV2021 还在用大量数据暴力train模型?主动学习,教你选出数据集中最有价值的样本...
  2. 视频异常行为检测算法MPN,在多个数据库上达到SOTA
  3. ICCV2021多模态视频分析与推理比赛参赛邀请
  4. CV Papers|计算机视觉论文推荐周报20200502期
  5. 联机手写汉字识别,基于新型RNN网络结构的方法
  6. 百万年薪大佬熬夜写作,Python高级编程之反爬虫及应对方案
  7. 深度学习博士灵魂拷问:我们在做算法还是在调参?
  8. 大数据分析实战-信用卡欺诈检测
  9. 国土空间规划师提升指南
  10. react前端显示图片_在 React 中使用 SVG 图标组件