iOS经典面试题

iOS静态库与动态库?

  • 静态库:程序在编译时链接到可执行目标文件中,当被多个程序使用时在系统中就有多份拷贝。
  • 动态库:链接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,可多个程序共用,节省内存。
  • 静态库有.a. framework两种形式存在, 动态库有.dylib.framework两种形式。值得注意的是,两种方式的库都可以以 .framework存在,如果是系统级别的像UIKit.frameworkFoundation.frameworkAVFoundation.framework等,这类都是系统的动态库。在正常的开发过程中,用户是无法使用动态库的,考虑到安全性的问题吧苹果是禁止我们开发者使用它,无法上架App Store。
  • 区分一个.framework是静态库还是动态库: 可以直接使用命令行的方式, 用file命令查看
cd  .../ABC.framework
file ABC

在第一行如果你看到类似[arm_v7:current ar archive],那就表明这是一个静态库,如果是Mach-O dynamically linked shared library x那就表明是一个动态库。

  • .a文件是一个二进制的文件,使用它的时候必须外在暴露.h文件配合使用,否者无法使用,而.framework除了二进制文件外,还包含了一些资源文件,比如plist文件等,头文件也包含在其中,可以直接使用。当库中使用到图片资源时,都会把它们放入到一个同名的.bundle文件中。.framework库里面是不能直接包含图片资源的,系统并不会去扫描里面的图片资源,故无法加载显示。
  • 相对.a.framework在制作过程中繁琐,暴露的.h头文件会比较多,建议使用.framework体验会好些。
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1.你使用过Objective-C的运行时编程(Runtime Programming)么?如果使用过,你用它做了...
    喝完酒再来杯拉菲阅读 4,721评论 0 2
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,887评论 1 32
  • 前言 1.静态库和动态库有什么异同? 静态库:链接时完整地拷贝至可执行文件中,被多次使用就有多份冗余拷贝。利用静态...
    Ly梦k阅读 12,760评论 3 18
  • 仅以方便自己查阅记录前言1.静态库和动态库有什么异同?静态库:链接时完整地拷贝至可执行文件中,被多次使用就有多份冗...
    190CM阅读 9,858评论 0 4
  • 输出结果:
    sunshining小迪儿阅读 1,490评论 0 0

友情链接更多精彩内容