首先介绍一下什么是静态库?
程序编译一般需经预处理、编译、汇编和链接几个步骤。在应用中,有一些公共代码是需要反复使用,就把这些代码编译为“库”文件;在链接步骤中,连接器将从库文件取得所需的代码,复制到生成的可执行文件中。这种库称为静态库
简单来说:"静态库就是程序代码的集合,是共享代码的一种方式"
静态库存在的形式
分为 .a 和 .framework
动态库和静态库使用上的区别
苹果系统内部都是使用的动态库,因为性能比较高;
静态库和动态库在使用上的区别
静态库:链接时,静态库中使用的文件会被完整地复制到可执行文件中,被多次使用就有多份冗余拷贝
动态库:不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序共用,节省内存
需要注意的是:
项目中如果使用了自制的动态库,不能被上传到AppStore
原因:安全问题(能替换系统内部方法的话,能窃取用户信息);
创建静态库
说了这么多开始上图!
创建仓库,在文件中写入方法!
在运行一下~
创建一个新的Demo用来测试
导入头文件,
就可以直接用了!怎么样 .a 静态库很简单吧!
带资源的静态库
首先库的文件中添加使用图片的方法!
拖一个资源时别忘了勾选!!
添加路径..资源
需要 运行一下,去资源库文件夹里查看,资源是否存在
拖到Demo项目中去, 就可以调用方法使用资源了!
我们开发中一搬把文件放在bundle里面
在样开发测试库太麻烦,所以,我们采用第二套方案
把图片资源直接拖到Bundle里面,
更改一下方法中使用读取图片的方法!改成从Bundle中读取就可以了!
运行一下!把库文件拖入Demo中!
别怪我啰嗦,记得Demo中我们上一次使用的没带资源的库,要删除掉!在项目中删除,还要在跳进去,在文件夹中删除!不然拖不进去!
这样我们的 .a 的静态库就做好了!!!很简单吧!
.Framework和.a创建方法差不多!几个注意的地方我这里简单说一下!!
首先创建成功的.framwork 是动态的需要修改一下
注意 创建静态库别忘了需改-ObjC 不然会崩掉!
这是本人自己的理解!如有不对的地方,还望海涵!!!!!!