分享好友 最新动态首页 最新动态分类 切换频道
iOS 动态库和静态库
2024-12-27 05:25

静态库和动态库的区别 
  • .a文件肯定是静态库,.dylib肯定是动态库,.framework可能是静态库也可能是动态库
  • 静态库在链接时,会被完整的复制到可执行文件中,如果多个App都使用了同一个静态库,那么每个App都会拷贝一份,缺点是浪费内存。类似于定义一个基本变量,使用该基本变量是是新复制了一份数据,而不是原来定义的
  • 动态库不会复制,只有一份,程序运行时动态加载到内存中,系统只会加载一次,多个程序共用一份,节约了内存。类似于使用变量的内存地址一样,使用的是同一个变量
  • 但是项目中如果使用了自己定义的动态库,苹果是不允许上架的,在iOS8.0以后苹果开放了动态加载.dylib的接口,用于挂载.dylib动态库
  • .a + .h


    CPU架构是CPU厂商给属于同一系列的CPU产品定的一个规范,主要目的是为了区分不同类型CPU的重要标示。模拟器上的架构和真机上的架构是不一样的,模拟器和模拟器之间,真机和真机之间的架构也是不同的。如果静态库的架构和测试项目对应的模拟器或真机上的架构不对应就会报“未定义的符号XXX架构”, 由此可以得出模拟器上的静态库

    模拟器架构

    • iPhone4s ~ 5 : i386
    • iPhone5s ~ 7Plus : x86_64 

    真机架构

    • 3GS~4s : armv7
    • 5/5c : armv7s(armv7兼容armv7s)
    • 5s ~ 6sPlus : arm64

    使用iPhone6s打包的静态库架构是:x86_64, 测试项目选择的是模拟器iPhone5对应的架构是:i386, 架构不匹配所以报Undefined symbols for architecture i386

    input file libiFly.a is not a fat file:输入文件libiFly.a不是一个胖文件,胖文件是指只支持一个架构,不兼容其它架构。


    让静态库支持所有模拟器对应的架构


    静态库有4种版本

    • 调试版本:不会对代码进行优化 
      • 模拟器版本
      • 真机版本 
    • 发布版本 :会对代码进行优化,执行效率相对调试版本快,但不会有明显的差别 
      • 模拟器版本
      • 真机版本 

    选中模拟器编译默认是调试版-模拟器版本,选中Generic iOS Device默认是是调试版本-真机版本

    生成Release版本的静态库

    首先编辑静态库对应的Scheme为Release,然后分别选择模拟器或真机Command + B 进行编译

    我们知道模拟器版本的静态库和真机版的是不能通用的,那么怎样让一个静态库即支持模拟器又支持真机呢

    将.framework文件添加到General—> Embedded Binaries 中,不添加会报错

    在使用第三方库时有可能会有一个.bundle文件,.bundle其实是一个物理文件夹,里面可以放图片等资源。因为.bundle是一个物理文件夹,所以当被拖入到项目中就不会和自己项目中的图片重名。

    使用.a时需要同时将.a 和 .h 文件拖入到工程中,使用.framework时直接将这个文件夹拖入进去即可,因为.framework文件夹中已经包含了.h文件。

    .a + .h + .bundle = .framework, 使用.framework更加方便

    Swift is not supported for static libraries. 
    Swift暴漏方法的方式:Swift不像OC那样有头文件,将Swift中的类和方法用public修饰就可以将类和方法暴漏出来 
    public class Tool : NSObject { 
    public func tool(){ 
    print(“Test”) 

    }

最新文章
竞价代运营是什么服务?揭秘其服务内容与核心优势!
大家好!今天我们来聊聊一个在现代营销中越来越热门的话题竞价代运营。作为一名在这个行业摸爬滚打多年的技术人员,我深知企业在营销过程中面临的种种挑战,而竞价代运营正是解决这些问题的利器。接下来,我将详细解析竞价代运营的服务内容
目前人最多的mmo手游有哪些 2023热门mmo游戏大全
目前人最多的mmo手游有哪几款?小编经过一段时间的数据收集,总结出以下几个玩家众多的mmo游戏,这几款游戏的受欢迎程度都非常高,无论是从画质方面分析,还是从游戏本身的剧情入手,在同类游戏中,它们在各方面都是不落后的,注意满足挑剔
素雅型应届毕业生个人简历表格模板(BG10210)
下载的简历模板是什么格式的?所有的简历模板都是Word格式的文件,.doc/.docx后缀名。下载的简历模板是否可以修改?所下载的简历模板均可以全元素修改,编辑。全元素是指模板的所有内容,如文字、标题、图标、背景色、照片等等,这些均可以
超融合HCI
更新日期:2022年 9月 22日前言本协议由深信服提供,与您共同签署。请您务必审慎阅读、充分理解本协议全部条款内容,特别是免除或者限制深信服责任的条款、对您的权利进行限制的条款、约定争议解决方式和司法管辖的条款等,以及针对性或专
选择媒体新闻代发公司需考虑的关键要素
选择媒体新闻代发公司的关键要素:确保新闻稿传递价值?在选择媒体新闻代发公司时,确保新闻稿能够传递价值是至关重要的。(媒介星软文平台)表示以下是一些关键要素,有助于选择到合适的代发公司:一、公司信誉与口碑查看客户评价:通过查看代发公
(13670期)2024新版 生意参谋教程,洞悉市场商机与竞品数据, 精准制定运营策略
课程目录[2024]新版生意参谋升级全面解读特训课_前言.mp4[2024]新版生意参谋升级全面解读特训课_1.0全新生意参谋升级背景.mp4[2024]新版生意参谋升级全面解读特训课_2.0四大重点解读.mp4[2024]新版生意参谋升级全面解读特训课_3.1分析店铺
蓝牙耳机一定要做CE认证吗?RED认证又是什么?
蓝牙耳机必须做CE认证吗?RED认证又是什么?蓝牙版本市面上有 V2.0/2.1/3.0/4.0,应用在蓝牙耳机时也有所差异。v2.1 不仅多了支持立体声音效,在稳定度及效果上也有较好的表现,并且可以向下兼容 v2.0 版本。此外,具备蓝牙功能的手机和耳
常州到山南琼结县物流公司--货运专线直达往返「-「哪个好」」2025排名一览
常州到山南琼结县物流公司--货运专线直达往返「-「哪个好」」2025排名一览常州到山南琼结县物流公司--货运专线直达往返「-「哪个好」」2025排名一览微信和电话号同步常州物流公司欢迎您==常州到山南琼结县-货运专线直达往返需要走几天公司
羞羞漫画免费观看——热门漫画实时更新,精彩内容看不停
在当今数字化的时代,漫画作为一种受欢迎的娱乐形式,吸引了无数读者的喜爱。而对于喜欢漫画的人来说,能够免费观看最新、最热门的漫画内容是一种极大的享受。今天,我将为大家介绍一款提供免费观看热门漫画的应用程序,让你随时随地都能沉
Vivo手机如何解锁Bootloader
如何解锁vivo手机的bootloader:详细步骤与注意事项在智能手机的世界里,bootloader(bl)解锁是进行定制和深度修改的第一步。对于vivo手机用户来说,解锁bootloader可以带来许多好处,比如刷入第三方rom、获取权限以及解锁更多隐藏功能。
相关文章
推荐文章
发表评论
0评