`
linwwwei
  • 浏览: 222720 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

iOS静态库和动态库

 
阅读更多
一、什么是库?
库是共享程序代码的方式,一般分为静态库和动态库。
二、静态库与动态库的区别?
静态库:链接时完整地拷贝至可执行文件中,被多次使用就有多份冗余拷贝。
动态库:链接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序共用,节省内存。
三、iOS里静态库形式?.a和.framework
四、iOS里动态库形式?.dylib和.framework
五、framework为什么既是静态库又是动态库?
系统的.framework是动态库,我们自己建立的.framework是静态库。
六、a与.framework有什么区别?
a是一个纯二进制文件,.framework中除了有二进制文件之外还有资源文件。
.a文件不能直接使用,至少要有.h文件配合,.framework文件可以直接使用。
.a + .h + sourceFile = .framework。
建议用.framework.
七、为什么要使用静态库?
方便共享代码,便于合理使用。实现iOS程序的模块化。可以把固定的业务模块化成静态库。和别人分享你的代码库,但不想让别人看到你代码的实现。开发第三方sdk的需要。
八、制作静态库时的几点注意:
1注意理解:无论是.a静态库还.framework静态库,我们需要的都是二进制文件+.h+其它资源文件的形式,不同的是,.a本身就是二进制文件,需要我们自己配上.h和其它文件才能使用,而.framework本身已经包含了.h和其它文件,可以直接使用。
2图片资源的处理:两种静态库,一般都是把图片文件单独的放在一个.bundle文件中,一般.bundle的名字和.a或.framework的名字相同。.bundle文件很好弄,新建一个文件夹,把它改名为.bundle就可以了,右键,显示包内容可以向其中添加图片资源。
3category是我们实际开发项目中经常用到的,把category打成静态库是没有问题的,但是在用这个静态库的工程中,调用category中的方法时会有找不到该方法的运行时错误(selector not recognized),解决办法是:在使用静态库的工程中配置other linker flags的值为-ObjC。
4如果一个静态库很复杂,需要暴露的.h比较多的话,就可以在静态库的内部创建一个.h文件(一般这个.h文件的名字和静态库的名字相同),然后把所有需要暴露出来的.h文件都集中放在这个.h文件中,而那些原本需要暴露的.h都不需要再暴露了,只需要把.h暴露出来就可以了。
九、判断一个Framework支持哪些架构
lipo -info ./MyFramework.framework/MyFramework
分享到:
评论

相关推荐

    iOS静态库制作实例

    通过这个实例,我们可以理解如何在静态库中正确处理Category,以及制作和使用iOS静态库的基本流程。在实际开发中,静态库有助于模块化代码,提高代码复用性,降低维护成本。不过,需要注意的是,静态库会增加应用的...

    iOS静态库项目的创建和使用源码

    本文将详细介绍如何创建和使用iOS静态库,并提供源码示例。 一、静态库的创建 1. 创建Xcode工程:首先,我们需要在Xcode中创建一个新的项目,选择"File" -> "New" -> "Project",然后在模板选择器中选择"Cocoa ...

    protobuf iOS静态库

    - `DBUILD_SHARED_LIBS=OFF` 表示我们希望构建静态库而非动态库。 - `Dprotobuf_BUILD_TESTS=OFF` 不构建测试用例,以加快编译速度。 配置完成后,运行以下命令进行编译和安装: ```bash make make install ``` ...

    IOS 静态库打包流程简化详细介绍

    总之,iOS静态库打包流程的简化不仅能够节省开发者的时间,还能降低出错概率,提高软件发布的质量。对于大型项目和SDK开发,这种自动化流程是不可或缺的。通过学习和理解这一过程,开发者可以更好地管理和维护自己的...

    IOS静态库MyStaticLib

    本篇将详细介绍如何创建并使用iOS静态库,以及`MyStaticLib`和`MyStaticLibUse`这两个项目在其中的作用。 一、iOS静态库的创建 1. **创建静态库工程** - 打开Xcode,选择"File" -> "New" -> "Project",在模板...

    iOS版openssl静态库

    这个压缩包提供了预编译的iOS版OpenSSL静态库,方便开发者直接集成到他们的项目中,无需从源码编译,节省了时间和资源。OpenSSL库包含了各种加密算法,如RSA、AES、DES等,以及SSL/TLS协议实现,对于需要处理HTTPS...

    ios-静态库实现版本对比.zip

    总之,"ios-静态库实现版本对比.zip"是一个关于iOS静态库版本管理的资源,它可以帮助开发者更好地管理和对比不同版本的静态库,优化项目结构,提高开发效率。通过深入理解静态库的工作原理,结合"VersionTool"的使用...

    iOS静态库生成方法

    通过以上步骤,你可以轻松地创建和管理自己的iOS静态库,提高代码的复用性和项目的可维护性。在实际开发中,还可以结合动态库(Dynamic Library)和CocoaPods等工具,以更灵活的方式管理和分发代码。

    IOS 静态依赖库代码实例Demo

    本示例“IOS 静态依赖库代码实例Demo”旨在演示如何在Xcode的workSpace环境中创建、使用和管理静态库。 首先,我们需要理解什么是静态库。静态库在编译时会被链接到目标应用程序中,成为应用程序的一部分。这意味着...

    iOS的framework动态库

    本文将深入探讨iOS中的动态库,即Dynamic Framework,它们是如何工作的,以及如何在项目中使用和创建。 动态库与静态库的区别在于,静态库在编译时会被合并到可执行文件中,而动态库则在运行时被加载。动态库的优势...

    IOS 静态库和Framework区别

    在iOS中,库主要分为静态库(Static Library)和动态库(Dynamic Library)。 二、静态库与动态库的区别? 1. 静态库(如.a文件):在编译阶段,静态库的代码会被完整地集成到目标应用程序中。这意味着每个使用静态...

    curl 全平台静态库,包括 android,ios ,win,mac,linux

    - iOS开发中,静态库可以方便地添加到Xcode项目,避免了动态库的某些限制,比如App Store的审核问题。 - Windows、Mac和Linux的静态库可以被各种编程语言调用,只要它们支持C或C++接口。 4. **使用libcurl**: -...

    ios静态库问题

    ### iOS静态库问题详解 #### 一、概述 在iOS开发过程中,静态库的应用非常广泛。它可以有效地将一些通用的功能封装起来,便于多个项目共享,同时也...希望本文能够帮助开发者们更好地理解和掌握iOS静态库的使用技巧。

    ffmepg 2 5 3 for iOS静态库 armv7 armv7s i386 x86 64 arm64

    标题提到的是FFmpeg 2.5.3 版本的iOS静态库,这个版本适用于多个iOS设备架构,包括armv7、armv7s、i386、x86_64以及arm64。静态库的好处是将所有依赖项都包含在内,使得在不同设备上运行时无需担心依赖问题。 1. **...

    制作静态库、动态库Framwork

    在iOS开发中,框架(Framework)是用于...总之,制作静态库和动态库Framework是iOS开发中常见的任务,了解并掌握这一技能有助于提高开发效率和代码复用。通过编写和使用打包脚本,我们可以更便捷地管理和分发这些框架。

    ios平台的支持arm64和x86_64的通用openssl静态库.zip

    本资源提供的是针对iOS平台,兼容arm64和x86_64架构的通用静态库——libssl.a和libcrypto.a。 1. **OpenSSL库介绍** OpenSSL是一个强大的安全套接层(SSL)和传输层安全(TLS)协议实现,同时也包含了各种常用的...

    银联支付64位静态库, iOS android,

    使用这个静态库,开发者可以避免了动态库带来的复杂性,如动态加载和依赖问题。 在集成过程中,开发者需要按照银联提供的SDK文档进行操作,这通常包括以下几个步骤: 1. **下载和导入库**:首先,将libUPPayPlugin...

    iOS端libcurl静态库

    本压缩包提供的libcurl静态库已针对iOS平台进行了编译,包含了对不同架构的支持,如armv7、armv7s、x86_64和arm64,覆盖了从老款iPhone到最新设备的兼容性。 集成libcurl到iOS项目中,通常需要以下步骤: 1. **...

Global site tag (gtag.js) - Google Analytics