当前位置: 首页 > news >正文

编译参数-ObjC的说明

一些第三方库里对系统库的类加了category

这时,就需要使用编译参数:-ObjC,这样第三方库中对系统类作的扩展方法才能在工程中使用。


但是使用-Objc后,会产生两个问题:

1undefined symbols 

2duplicate symbol


undefined symbols 说明工程中没有引入第三方库引用的库。

如果不加-ObjC参数,则在编译时不会出错,但运行时用到了没引用库的方法,则系统会崩溃。

这个问题好解决。只要找到缺的库,引入工程就可以了。


duplicate symbol的问题就不好解决了,说明第三方库中的类名和工程中的类名,或其它第三方库中的类名重名了。

最常见的比如Reachability这个类,如果第三方库中引用了,自己的工程中也引用了,就会报duplicate symbol

如果引用的第三方库没有源代码,就只能将自己工程中的重名类重命名了。


应对上面的问题,如果自己要制作一个库的话,要注意两点:

1、避免对系统类加category,这样,别人用你的库时,不加ObjC参数也可以用你的库。

2、如果库中用到了其它的第三方的源代码,尤其是用的比较普遍的,如Reachability,一定一定要对

   这些类重命名,最常见的作法就是给类名加个前缀。以避免别人用你的库时,产生duplicate symbol的问题。


相关文章:

  • 服务导向架构(Service Oriented Architecture SOA)
  • 帮助写贝塞尔曲线控制点代码的神器
  • 在NSOperation等待异步请求结束
  • 10月4日培训日记
  • 粗茶淡饭幸福长
  • 致《编程的奥秘》新老读者
  • CocoaAsyncSocket的readDataToLength方法的理解
  • 10月5日培训日记
  • __bridge相关的三个关键字的总结
  • AsyncSocket中tag参数的用处
  • 给我深爱着的人,祝你中秋快乐……
  • 用UILocalNotification实现闹钟的坑
  • .NET中的Event与Delegates,从Publisher到Subscriber的衔接!
  • 略时间中秒的部分,使时间中的秒变成0
  • 不可忽视的力量,插件主题网站
  • 【MySQL经典案例分析】 Waiting for table metadata lock
  • 30秒的PHP代码片段(1)数组 - Array
  • exports和module.exports
  • Linux Process Manage
  • React-redux的原理以及使用
  • Vue UI框架库开发介绍
  • Vue2 SSR 的优化之旅
  • 从PHP迁移至Golang - 基础篇
  • 关于springcloud Gateway中的限流
  • 官方解决所有 npm 全局安装权限问题
  • 基于MaxCompute打造轻盈的人人车移动端数据平台
  • 解析 Webpack中import、require、按需加载的执行过程
  • 提升用户体验的利器——使用Vue-Occupy实现占位效果
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • 跳前端坑前,先看看这个!!
  • 我从编程教室毕业
  • 用Visual Studio开发以太坊智能合约
  • ​你们这样子,耽误我的工作进度怎么办?
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • # Panda3d 碰撞检测系统介绍
  • #DBA杂记1
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (ros//EnvironmentVariables)ros环境变量
  • (编程语言界的丐帮 C#).NET MD5 HASH 哈希 加密 与JAVA 互通
  • (附源码)计算机毕业设计ssm电影分享网站
  • (四)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (已解决)什么是vue导航守卫
  • (译)计算距离、方位和更多经纬度之间的点
  • (转)linux下的时间函数使用
  • (轉貼) UML中文FAQ (OO) (UML)
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .NET CLR基本术语
  • .NET Core引入性能分析引导优化
  • .Net 代码性能 - (1)
  • .NET 设计模式—简单工厂(Simple Factory Pattern)
  • .netcore 6.0/7.0项目迁移至.netcore 8.0 注意事项
  • .NET教程 - 字符串 编码 正则表达式(String Encoding Regular Express)
  • .NET面试题(二)
  • /usr/local/nginx/logs/nginx.pid failed (2: No such file or directory)
  • @Autowired自动装配