iOS- SDK开发动态库和静态库

前言

在iOS开发过程成,肯定会接触到库这个东西,比如系统的UIKit,第三方的SDWebImage等。所以库其实就是代码和文件的集合,通过这些可实现一些需要的功能。将这种代码快打包成二进制文件。并且可以载入到内存中。说白了就是将功能打包成一个模块,方便在开发过程中使用和共享。

静态库和动态库的区别

库的本质是可执行的二进制文件,根据使用的方式不同,可以分为动态库和静态库,其中系统提供的库都属于动态库。

静态库
  1. 是以.a 或者. FrameWork的后缀形式存在。
  2. 静态库的可执行文件通常会比较大,因为所需的数据都会被整合到目标代码中,因此编译后的执行文件不需要外部库的支持,直接就能使用。
  3. 静态库只需编译时加载,链接时,会完整的复制份到可执行文件中。
  4. 有多个app使用就会被复制多份,不能共享且占用更多冗余内存。
  5. 所有的函数都在库中,因此当修改函数时需要重新编译。
动态库
  1. 是以.tbd 或者. FrameWork的后缀形式存在。
  2. 动态库的文件会比较小,因为在编译过程中,数据并没有整合到目标代码中,只有在执行到该函数时才去调用库中的函数,但以此首次加载就比较耗时。
  3. 动态库由于没有整合到目标代码,因此编译时不会加载,运行时动态申请调用。
  4. 多个app使用,可以共享资源减少内存使用,但以此程序的运行环境需要提供相应的库。
  5. 库是动态的,因此修改库中函数时,不需要重新编译。

.FrameWork文件和其他两者的区别在于,项目中库的使用除了需要库文件之外,还包含资源文件和头文件。因此FrameWork其实已经和库文件没有关系,只是将库文件和所需的其他东西打包整合。

iOS8 之前,苹果不允许第三方框架使用动态方式加载,从 iOS8 开始允许开发者有条件地创建和使用动态框架 Cocoa Touch Framework。和系统 framework 不同,app 中使用 Cocoa Touch Framework 制作的动态库 在打包和提交 app 时会被放到 app main bundle 的根目录 中,运行在沙盒里,而不是系统中。也就是说,不同的 app 就算使用了同样的 framework,但还是会有多份的框架被分别签名,打包和加载。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 前言 1.静态库和动态库有什么异同? 静态库:链接时完整地拷贝至可执行文件中,被多次使用就有多份冗余拷贝。利用静态...
    Ly梦k阅读 12,761评论 3 18
  • 仅以方便自己查阅记录前言1.静态库和动态库有什么异同?静态库:链接时完整地拷贝至可执行文件中,被多次使用就有多份冗...
    190CM阅读 9,873评论 0 4
  • 介绍 动态库形式:.dylib和.framework 静态库形式:.a和.framework 动态库和静态库的区别...
    齐滇大圣阅读 46,630评论 18 251
  • 2018-06-19 浅析静态库链接原理编译原理以及什么是静态库和动态库 转之: iOS 静态库和动态库(库详解)...
    _coCo__阅读 3,851评论 0 2
  • 1.什么是库,为什么使用库? 库是共享程序代码的方式,一般分为静态库和动态库;库实现了iOS程序的模块化,将某些特...
    公子墨香阅读 13,993评论 18 59

友情链接更多精彩内容