06.iOS 静态库的封装和使用

@(〓〓 iOS-实用技术)[静态库/动态库封装]


目录

  • 06.iOS 静态库的封装和使用
  • 1.iOS 库的基本概念
    • 静态库和动态库
  • 2.静态库的封装
    • .a静态库的封装
      • 编译Debug/Release 模拟器/真机版本的静态库
      • 合并静态库
    • .framework静态库的封装
      • .framework静态库的使用

1.iOS 库的基本概念

库就是程序代码的集合,是共享程序代码的一种方式.


静态库和动态库

  • 1.iOS中静态库和动态库文件的后缀名

    • 静态库文件后缀名: .a.framework
    • 动态库文件后缀名: .dylib.framework
  • 2.静态库和动态库的区别

    • 动态库则不会复制, 只有一份. 程序运行时动态加载到内存; 系统只加载一次, 多个程序共用, 节省内存;
    • 但是项目中如果使用到自己的动态库, 不允许上架!
      但是WWDC2014上公布的苹果对ios8开放动态加载dylib的接口,也就是说 开放了动态库挂载.
    • 静态库在链接时, 会被完整的复制到可执行文件中; 被多次使用, 就有多份拷贝;

2.静态库的封装

.a静态库的封装

  • 1.创建工程选择iOS/Framework & Library,选择Coaoa Touch Static Library
06.iOS 静态库的封装和使用_第1张图片
01.创建工程.png

  • 2.设置对外公开的头文件
06.iOS 静态库的封装和使用_第2张图片
02.设置对外公开的头文件.png

  • 3.设置让所有架构都能正常编译和使用
06.iOS 静态库的封装和使用_第3张图片
03.设置让所有架构都能正常编译和使用.png

  • 5.创建一个Log类,实现接口方法,并在.h文件中对外提供接口方法
// Log.h文件中提供接口
+ (void)wxLog;

// Log.m文件中实现方法
+ (void)wxLog
{
    NSLog(@"Test Lib");
}
06.iOS 静态库的封装和使用_第4张图片
04.创建一个Log类.png

  • 6.使用快捷键command + b编译静态库(当前运行选择为模拟器),编译成功后找到库存储路径.

进入静态库生成的路径中

06.iOS 静态库的封装和使用_第5张图片
05.静态库生成的路径.png

以上操作弹出窗口后进入Build/Products/Debug-iphonesimulator文件夹中,.a的库文件对外公开的头文件就存放在该目录下.因为刚才是处于Debug模式下选择模拟器运行环境,所以生成的Debug-iphonesimulator文件夹

06.iOS 静态库的封装和使用_第6张图片
06.Build:Products:Debug-iphonesimulator文件夹.png

  • 7.确保生成的静态库能在你所有模拟器上运行,先查看静态库支持的平台.
    • 使用lipo -info查看库所支持的架构. i386 x86_64: 表示能在所有模拟器上运行.
    • 模拟器架构: iPhone 4s - iPhone 5是i386架构,iPhone 5s - iPhone 6s Plus是x86_64架构.
06.iOS 静态库的封装和使用_第7张图片
07.查看库所支持的架构.png

  • 8.静态库的使用.只需将生成的.a文件和.h文件拖入到测试静态库的工程即可使用静态库.
06.iOS 静态库的封装和使用_第8张图片
08.静态库的使用.png
06.iOS 静态库的封装和使用_第9张图片
09.静态库的使用.png

编译Debug/Release 模拟器/真机版本的静态库

  • 1.设置要编译成Debug还是Release版本的静态库.如果是要生成Release就选择Release
06.iOS 静态库的封装和使用_第10张图片
10.设置要编译成Debug还是Release版本的静态库.png
06.iOS 静态库的封装和使用_第11张图片
11.选择对应的版本.png

  • 2.设置要编译成真机还是模拟器版的静态库
12.设置要编译成真机.png
  • 3.如果四种情况的静态库都进行编译,则会生成以下四个文件夹
06.iOS 静态库的封装和使用_第12张图片
13.四种情况的静态库都进行编译.png

合并静态库

  • 1.使用lipo -create ... -output ... 合并静态库.最终合并的静态库的大小相当于Debug Device.a和Debug Simulator.a的总和.
06.iOS 静态库的封装和使用_第13张图片
14.合并静态库.png

.framework静态库的封装

  • 1.创建工程选择iOS/Framework & Library,选择Coaoa Touch Framework
06.iOS 静态库的封装和使用_第14张图片
15.创建工程.png
  • 2.删除自动生成的头文件.注意: Info.plist不能删除

06.iOS 静态库的封装和使用_第15张图片
16.删除自动生成的头文件.png

  • 3.创建Tool类,并对应提供log类方法,实现log类方法
// Tool.h文件中提供接口
+ (void)log;

// Tool.m文件中实现方法
+ (void)log
{
    NSLog(@"framework Test");
}

  • 4.设置要生成的.framework文件为静态库
06.iOS 静态库的封装和使用_第16张图片
17.设置要生成的.framework文件为静态库.png

  • 5.设置支持所有架构
06.iOS 静态库的封装和使用_第17张图片
18.设置支持所有架构.png

  • 6.设置要公开的所有头文件
06.iOS 静态库的封装和使用_第18张图片
19.设置要公开的所有头文件.png

.framework静态库的使用

  • 1.创建一个测试静态库的工程,生成的.framework的静态库拖入到工程
06.iOS 静态库的封装和使用_第19张图片
20.静态库拖入到工程.png
  • 2.使用尖括号<>导入头文件之后就能正常使用.framework的静态库
    • 注意: 导入头文件为 #import
06.iOS 静态库的封装和使用_第20张图片
21.使用.framework的静态库.png

你可能感兴趣的:(06.iOS 静态库的封装和使用)