1、iOS开发中静态库和动态库区别
不管动态库还是静态库,本质上就是可执行二进制格式,可以被载入到内存中执行,分为静态库和动态库两种。
静态库:以.a 和 .framework为文件后缀名。
动态库:以.tbd(之前叫.dylib) 和 .framework 为文件后缀名。
静态库与动态库的区别
静态库:链接时会被完整的复制到可执行文件中,被多次使用就有多份拷贝。 好处是:
1.模块化,分工合作,提高了代码的复用及核心技术的保密程度
2.避免少量改动经常导致大量的重复编译连接
3.也可以重用,注意不是共享使用
动态库:链接时不复制,程序运行时由系统动态加载到内存,系统只加载一次,多个程序共用(如系统的UIKit.framework等),节省内存。动态库好处是:
1.使用动态库,可以将最终可执行文件体积缩小,将整个应用程序分模块,团队合作,进行分工,影响比较小
2.使用动态库,多个应用程序共享内存中得同一份库文件,节省资源
3.使用动态库,可以不重新编译连接可执行程序的前提下,更新动态库文件达到更新应用程序的目的。
4.应用插件化
5.软件版本实时模块升级
6.共享可执行文件 在其它大部分平台上,动态库都可以用于不同应用间共享,这就大大节省了内存。从目前来看,iOS仍然不允许进程间共享动态库,即iOS上的动态库只能是私有的,因为我们仍然不能将动态库文件放置在除了自身沙盒以外的其它任何地方。 不过iOS8上开放了App Extension功能,可以为一个应用创建插件,这样主app和插件之间共享动态库还是可行的。
补充一点iOS 的各设备CPU架构
模拟器:
iPhone4s-iPnone5:i386
iPhone5s-iPhone7 Plus:x86_64
真机:
iPhone3gs-iPhone4s:armv7
iPhone5-iPhone5c:armv7s
iPhone5s-iPhone6s:Plus:arm64
参考链接:iOS_小松哥 : https://www.jianshu.com/p/90f5ec723175
邓立兵 http://ios.jobbole.com/82644/?utm_source=blog.jobbole.com&utm_medium=relatedPosts