• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

iOS - 制作Swift动态库

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

动态库

动态库即动态链接库(Windows 下的 .dll,Linux 下的 .so,Mac 下的 .dylib)。与静态库相反,动态库在编译时并不会被拷贝到目标程序中,目标程序中只会存储指向动态库的引用。等到程序运行时,动态库才会被真正加载进来。动态库的优点是,不需要拷贝到目标程序中,不会影响目标程序的体积,而且同一份库可以被多个程序使用(因为这个原因,动态库也被称作共享库)。

iOS FrameWork

在 iOS 8 之前,iOS 平台不支持使用动态 Framework,开发者可以使用的 Framework 只有苹果自家的 UIKit.Framework,Foundation.Framework 等,iOS 8/Xcode 6 推出之后,iOS 平台添加了动态库的支持

创建动态库

打开Xcode,Command+Shift+N创建新工程,选择 Cocoa Touch Framework,语言选择Swift

暴露接口

对于那些需要暴露出来,即在框架外部也能访问使用的类、方便、变量前面需要加上关键字 Public

编译动态库

command+B编译成功,在Products文件下出现XXX.framework文件

使用动态库

如果把某个自己开发的动态库Add在Linked Frameworks and Libraries里,程序一启动就会报Reason: Image Not Found,你只能把它放在Embeded Binaries里面才能正常使用。为什么呢?因为加在EmbededBinaries里面的东西其实会被复制一份到xx.app里面(直译就是嵌入的框架)

存在的问题:在动态库中不能使用静态库

造成这个的主要原因是Swift的运行时库(不等同于OC的runtime概念),由于Swift的ABI不稳定,静态库会导致最终的目标程序中包含重复的运行库,相关可以看下最后的参考文章SwiftInFlux#static-libraries

临时解决办法:动态库中有需要依赖静态库的swift文件/页面,都通过闭包的方式回调到主工程中

CocoaPods使用Use_framework!

对于 Swift 项目,CocoaPods 提供了动态 Framework 的支持,通过 use_frameworks! 选项控制。

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
SWIFT 之CoreData初试发布时间:2022-07-14
下一篇:
swift学习笔记之-访问控制发布时间:2022-07-14
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap