ios 链接参数使用

在项目中经常会应用到第三方的静态库, 在引入这些静态库的时候,经常出现这些问题:undefined symbols,duplicate symbol,其实在以前项目中也碰到过这种问题,只是当时单纯的为了解决问题,只是来了个大概的了解之后加了个链接参数,草草的结束了问题,今天上传代码到appstore得时候也碰到了这个问题, 居然一时不知道该怎么解决, 所以还是觉得该总结一下。

之所以需要额外的链接参数是由于 objective-c特殊的语言特性,(category)类别,当一个静态库库使用了类别来扩展系统类或原有的类(项目中存在的类),链接器不知该如何把原有的方法和静态库中类别的方法整合起来,虽然编译会通过,但是会导致在运行时奔溃现象,因为找不到可执行代码模块。会出现unrecongnized selector这样的错误。在编译到静态库时,这些代码模块实际上是存在不同的obj文件里的。引入链接参数-ObjC就是将静态库中的对象和类别全部引用进来(也有说法是将objective-c代码全部引用进来)。

-all_load: 引入静态库中所有的方法,这样会让程序变大外,可能引入一些通项目重名的名称。

-force_load:引入指定的静态库

参考

 Universal static library problem in iPhone SDK

cocos2d for MacBuilding Objective-C static libraries with categories

  Objective-C categories in static libraryHow can I avoid “duplicate symbol” errors in xcode with shared static libraries?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值