开发中经常使用三方库去实现某特定功能,而这些三方库通常又分为开源库和闭源库。开源库可以直接拿到源码,和自己写的没有什么区别,我们可以最大程度的修改源码来适应自己功能。闭源库就是被发布者提前打包好的静态库或捆包,对此我们无法看到内部实现,对于其封装好的特定功能,我们也只需要调用其开放的API即可。
在正式的上代码之前,先介绍一些从网上搜集的静态库相关的基本概念,以加深对后面知识的理解
<强> 1。库强>
库实际上是一种代码共享的方式,主要用于代码重用和源码隐藏,通常分为动态库和静态库。
<强> 2。区别强>
静态库:链接时完整的拷贝至可执行文件中,被多次使用就有多份冗余拷贝。
动态库:链接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序共用,节省内存空间。
<强> 3。iOS中静态库的形式强>
在iOS中静态库以。和.framework的形式存在,动态库以. dylib和.framework的形式存在。
之所以.framework既可能是动态库又可能是静态库,是因为苹果公司禁止用户级应用使用动态库,而自己却又堂而皇之的使用动态库,这就造成了iOS中系统级的.framework是动态库,用户级的.framework是静态库(无可奈何啊)。
本文就来讲解一下。和.framework静态库的创建与.bundle资源包的使用。
库分静态库和动态库两种。从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行。
静态库和动态库是相对编译期和运行期的:静态库在程序编译时会被链接到目标代码中,程序运行时将不再需要改静态库;而动态库在程序编译时并不会被链接到目标代码中,只是在程序运行时才被载入,因为在程序运行期间还需要动态库的存在。
<强>静态库的形式强>
形式为:。一个和.framework两种
其中.framework类型的库如果是系统内部的是动态库,我们自己创建的是静态库
<>强。一个和.framework的区别强>
。是一个纯二进制文件,.framework中除了有二进制文件之外还有资源文件。
。文件不能直接使用,至少要有. h文件配合,.framework文件可以直接使用。
。+ . h +源文件=.framework。
建议用.framework。
<强>静态库的优势强>
-
<李>方便共享代码,便于合理使用。李>
<李>实现iOS程序的模块化。可以把固定的业务模块化成静态库。李>
<李>和别人分享你的代码库,但不想让别人看到你代码的实现。李>
<李>开发第三方sdk的需要。李>
创建和打包。静态库
-
<李>创建静态库项目
iOS——比;框架,图书馆——比;Cocoa Touch静态库李> <李>把需要编译成静态库的代码拖进项目李> <李>设置可见的。h文件。
构建阶段——比;复制文件添加。h文件即可。
李>
1。修改支持的架构
,,,,4.1设置支持所有模拟器架构构建设置——比;建立活跃的建筑只有——比;调试改为没有
,,,,4.2设置支持所有手机架构
2。编译
,,,,编译一次模拟器,编译一次手机。
,,,,会生成。一个文件和可见的头文件。
,,,,使用命令行,合并刚刚生成的的两个路径,到另一个路径,例如:
,,,,脂肪——创造模拟器自由路径真机自由路径与产出/用户/用户名/桌面/libPSSTest.a
3。使用静态库