iOS Static Library 静态类库

1.什么是静态库

  • 什么是库
    库是程序代码的集合,是共享程序代码的一种方式。
    闭源库是不公开源代码,经过编译后的二进制文件。主要分为:静态库和动态库。

  • 静态库与动态库的区别:

    • 静态库:.a 和 .framework。链接时,静态库会被完整地复制到可执行文件中, 被多次使用就有多份冗余拷贝 (左图所示)
    • 动态库:.dylib 和 .framework。链接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序共用,节省内存。项目中如果使用了自制的动态库,不能被上传到 AppStore

2.创建

新建Workspace:选择 File -> New -> Workspace , 名称填入 DemoLibrary.xcworkspace.

新建Project:选择 File -> New -> Project

这里写图片描述

选择Framework & Library > Cocoa Touch Static Library
新建成功后,工程的结构如下:

这里写图片描述

3.编码实现

最初工程中有DemoLib.h和DemoLib.m文件,添加具体的实现函数。例如,在DemoLib.h中:

- (float) caculateAverage:(float)a and:(float)b;

在DemoLib.m中:

- (float) caculateAverage:(float)a and:(float)b
{
    return (a+b)/2;
} 

选择Target DemoLib > Build Phases > Headers,若Build Phases中没有Headers项,则点击”+”,选择New Headers Phase。

将DemoLib.h拖到Headers的Public栏中:

这里写图片描述

4.生成

保存编码和操作后:选择真机设备,然后Product > Build,会生成libDemoLib.a,并将它和DemoLib.h复制到Build目录下。选择模拟器,Product > Build ,生成模拟器使用的libDemoLib.a。

选中生成的.a文件,然后右键点击出来的菜单中选择“Show in Finder“,直接打开.a文件坐在文件夹。其中Debug-iphoneos只用于真机,Debug-iphonesimulator适用于模拟器。如果 Scheme 是Release 模式,生成的文件夹就以 Release 开头

如果想让一个 .a 文件能同时用在真机和模拟器上,需要进行合并
在终端输入指令:

lipo -create Debug-iphoneos/libDemoLib.a Debug-iphonesimulator/libDemoLib.a -output libDemoLib.a

合并后.a的大小等于之前两个.a大小之和。
查看.a的类型:

lipo –info libMJRefresh.a

5.使用

在需要使用静态库的工程中加入.a和相应的.h文件,如果库还包含其他资源文件,也需要加进来。在需要使用的文件中import库的头文件即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值