美文网首页
iOS 库(一)动态库与静态库

iOS 库(一)动态库与静态库

作者: fanren | 来源:发表于2023-04-07 16:53 被阅读0次

    前言

    在iOS开发中,我们会用到系统的库(UIKitFoundation等),也会用到一些第三方的库(AFNetworkingSDWebImage等),偶尔也会自定义一些自己的库;
    库,是我们实现组件化路上的一个基石;

    一、分类

    库,一般被分为静态库、动态库;
    但是在iOS中,我更习惯把它们分为三类:

    • 静态库
    • 系统的动态库
    • 自定义的动态库

    二、静态库

    静态库,简单理解就是多个目标文件的集合;

    1. 特点

    直接提供的是目标文件,不需要重新编译,直接链接即可;

    在app编译的时候,已经进行了把库加载进去了,运行的时候,不需要重新加载,所以编译速度相比动态块更快;

    三、系统的动态库

    就是我们平时在开发中用到的系统的动态库,例如UIKitFoundation等;这类动态库,是由iOS系统提供,供开发者使用的;

    1. 特点:

    这类动态库不会再app编译的时候就被植入app内部,而是把app的信息植入了app,在app运行的时候去动态查找动态库,并进行链接(这一步被叫做动态链接

    2. 分类

    根据动态库的载入时间,又将动态库分为了两种:

    • 动态链接库:在启动app的时候,就立即将动态库进行加载
    • 动态加载库:当需要的时候,再使用dlopen等通过代码或命令的方式来加载(在程序启动之后

    四、自定义动态库

    就是iOS开发者自定义的framework
    这类的动态库与系统的动态库有所区别,其会在编译的时候,全部置入app内部,然后再app启动的时候,全部加载,这样就会导致app的体积很大,而且启动的速度慢;

    系统动态库和自己编译的动态库本质上是一样的, 只是使用方式不一样. 自己编译的动态库由于签名校验限制, 只能当作静态库一样使用; 系统的动态库不受签名校验限制, 可以动态加载.

    相关文章

      网友评论

          本文标题:iOS 库(一)动态库与静态库

          本文链接:https://www.haomeiwen.com/subject/segpddtx.html